{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`import warnings`作提示警告，而不中断程序的执行；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regression loss  \n",
    "* MSE\n",
    "* MAE\n",
    "* Huber loss\n",
    "* Los cosh loss\n",
    "* Quantile loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Mean Square Error (MSE/ L2 Loss)\n",
    "$ MSE = \\sum\\limits_{i=1}^n  {(y_i - y_i^p)}^2 $  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def mse(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: mean square error loss\n",
    "    \"\"\"\n",
    "    \n",
    "    return np.sum((true - pred)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(10, 100) \n",
    "pred = np.arange(-100,100, 2)\n",
    "\n",
    "loss_mse = [mse(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot \n",
    "ax1.plot(pred, loss_mse)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"MSE Loss vs. Predictions\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Mean Absolute Error (MAE/ L1 loss)\n",
    "$ MAE = \\sum\\limits_{i=1}^n  {|y_i - y_i^p|} $  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def mae(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: mean absolute error loss\n",
    "    \"\"\"\n",
    "    \n",
    "    return np.sum(np.abs(true - pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(10, 100) \n",
    "pred = np.arange(-100,100, 2)\n",
    "\n",
    "loss_mae = [mae(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot \n",
    "ax1.plot(pred, loss_mae)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"MAE Loss vs. Predictions\")\n",
    "\n",
    "fig.tight_layout() # 自动调整子图参数，使得子图自适应图形区域"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Smooth Mean Absolute Error/ Huber Loss "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sm_mae(true, pred, delta):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: smoothed mean absolute error loss\n",
    "    \"\"\"\n",
    "    loss = np.where(np.abs(true-pred) < delta , 0.5*((true-pred)**2), delta*np.abs(true - pred) - 0.5*(delta**2))\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "target = np.repeat(0, 1000) \n",
    "pred = np.arange(-10,10, 0.02)\n",
    "\n",
    "delta = [0.1, 1, 10]\n",
    "\n",
    "losses_huber = [[sm_mae(target[i], pred[i], q) for i in range(len(pred))] for q in delta]\n",
    "\n",
    "# plot \n",
    "for i in range(len(delta)):\n",
    "    ax1.plot(pred, losses_huber[i], label = delta[i])\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"Huber Loss/ Smooth MAE Loss vs. Predicted values (Color: Deltas)\")\n",
    "ax1.legend()\n",
    "ax1.set_ylim(bottom=-1, top = 15)\n",
    "\n",
    "fig.tight_layout()\n",
    "\n",
    "# fig.savefig('/Users/princegrover/Documents/msan/Machine-Learning/images/huber.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Log cosh loss\n",
    "$ L(y, y^p) = \\sum\\limits_{i=1}^n  {\\log(\\cosh(y_i^p-y_i))} $  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def logcosh(true, pred):\n",
    "    loss = np.log(np.cosh(pred - true))\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "target = np.repeat(0, 1000) \n",
    "pred = np.arange(-10,10, 0.02)\n",
    "\n",
    "loss_logcosh = [logcosh(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot \n",
    "ax1.plot(pred, loss_logcosh)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"Log-Cosh Loss vs. Predictions\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Quantile loss\n",
    "\n",
    " $ L_\\gamma(y, y^p) = \\sum\\limits_{i=y_i<y_i^p}  ({\\gamma-1}).|y_i - y_i^p| + \\sum\\limits_{i=y_i\\geq y_i^p}  ({\\gamma}).|y_i - y_i^p|  $  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def quan(true, pred, theta):\n",
    "    loss = np.where(true >= pred, theta*(np.abs(true-pred)), (1-theta)*(np.abs(true-pred)))\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "target = np.repeat(0, 1000) \n",
    "pred = np.arange(-10,10, 0.02)\n",
    "\n",
    "quantiles = [0.25, 0.5, 0.75]\n",
    "\n",
    "losses_quan = [[quan(target[i], pred[i], q) for i in range(len(pred))] for q in quantiles]\n",
    "\n",
    "# plot \n",
    "for i in range(len(quantiles)):\n",
    "    ax1.plot(pred, losses_quan[i], label = quantiles[i])\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Quantile Loss')\n",
    "ax1.set_title(\"Loss with Predicted values (Color: Quantiles)\")\n",
    "ax1.legend()\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### **All regression losses in single plot**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 40)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAGeCAYAAADc2dYaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4XOWZ8P/vPU1TVF2xLWzJTbZVbQsXijEQNgEMwSwJmCyEeCG/sMuGzYYkZJMYkhc2hA0lZdm8eRMwbLI2CaHsQkKAuAOxsWxZcpd7E66SVWZGU87z++OM5G5J9syc0czzuS5d1pTznHtmjqVbT7kfUUqhaZqmaZqmJZfN6gA0TdM0TdMykU7CNE3TNE3TLKCTME3TNE3TNAvoJEzTNE3TNM0COgnTNE3TNE2zgE7CNE3TNE3TLKCTME3TEkpE/lVEfnWex+8VkRXJjOlcRKRIRJSIOGK3/yQiX0zCeR8Tkd8koN35IvJ4vNvVNC0+dBKmaX2ciOwSkU9ZHce5KKX+TSl1H5yZ5FyI2OsNiEibiBwUkRdFJDt+EZ+glLpBKfVSD2NK2c9A07TUpJMwTdP6opuVUtnAJOAy4LunP0FM+mecpmkpS/+A0rQ0JiL3i8g2ETkmIv8jIkNj94uIPCsih0TkuIjUiUhZ7LEbRWSjiLSKyH4Refgcbe8Wkcmx7/8u1sM1IXb7PhF5I/b9yUNty2L/Nsd6sqaf1N6PRaRJRHaKyA09eX1Kqf3An4DO2JeIyBMi8gHgB0aKSJ6I/FpEGmOv53ERsceeb4+d94iI7ABuOu01LhGR+057PzfF3puNIjJJRP4LGA78b+w1fTP23Gki8qGINIvIOhGZeVI7xSKyNNbOe8CAc73G2PlmnXTbEYt3Uuz270Xkk9jnuExESs/RzhnDvrHPbHTs+6zYe7En1sP4CxHxxB4bICJvxV7LMRFZrhNcTbt4+j+RpqUpEbkW+CHweWAIsBtYGHv4b4AZwFggH7gDOBp77NfA/6eUysFMbhad4xRLgZmx72cAO4CrT7q99CzHzIj9m6+UylZKfRS7PRXYgpmMPAX8WkSkB6/xUuBGYO1Jd98NfBnIwXzNLwERYDQwEfO1dyZW9wOzYvdXA7ef51yfAx4D7gFygVuAo0qpu4E9xHrnlFJPicgw4G3gcaAf8DDwBxEZGGvuv4Ga2Ov9P8D55p0tAOacdPvTwBGl1JrY7T8BY4BBwBrgt+dp63x+hHk9VGG+V8OAebHHvg7sAwYCg4F/BfSed5p2kXQSpmnp6wvAC0qpNUqpDuDbwHQRKQLCmEnKOECUUpuUUo2x48LABBHJVUo1nfTL/nRLOZF0XYWZ8HXevpqzJ2Hnslsp9f+UUlHMpGkI5i/7c3lDRJqBFbHz/NtJj81XSm1QSkUwE6AbgH9WSrUrpQ4BzwJ3xp77eeA5pdRepdSx2Gs4l/uAp5RSHyvTNqXU7nM89++APyql/qiUMpRS7wGrgRtFZDjmEOr3lFIdSqllwP+e57z/DdwiIt7Y7bti9wGglHpBKdUa+4wfAypFJO887Z0hlvDeD3xNKXVMKdWK+Z52vk9hzM9khFIqrJRarvTGw5p20XQSpmnpayhmTxAASqk2zN6uYUqpRcDPgf8ADorIL0UkN/bUv8XsXdodGzKbztktBa4SkUsAO/AKcEUsycsDansR6ycnxemPfXu+yfa3KqXylVIjlFL/oJQKnPTY3pO+HwE4gcbYUFoz8H8xe43AfI9Ofv65kiqAS4Ht3byOk8/7uc5zxs57JWYiMxRoUkq19+S8SqltwCbg5lgidguxJCw2nPqkiGwXkRZgV+ywcw5vnsNAwAvUnBTvO7H7Af4d2Aa8KyI7ROSRXravadpZ6CRM09LXAcxkAAAR8QH9gf0ASqmfKqUmA6WYw1DfiN3/sVLqs5iJyhvA787WeCw58ANfBZbFek8+wRwKXKGUMs52WHxe2nmdfI69QAcwIJa05SulcpVSnfOmGjGTq07Dz9PuXmBUD87Z+dz/Oumc+Uopn1Lqydg5C2KfR0/OCyeGJD8LbIy992D2in0W+BRm4lsUu/9sQ7ntmImW+QQzee50BAgApSfFmxdb/ECsp+3rSqmRwM3Av4jIdd3ErGlaN3QSpmnpwSki7pO+HJi9JV8SkSoRycIcXlqplNolIpeJyFQRcWL+cg4CURFxicgXRCRPKRUGWoDoec67FHiQE0OPS067fbrDgAGMvMjX2yOxIdZ3gadFJFdEbCIySkQ6h01/B3xVRApFpAA4Xw/Pr4CHRWSymEaLSGeSe5BTX9NvMHuuPh3rrXKLyEwRKYwNYa4Gvh97v6/ETGzOZyHmXLYHOGkoEnNIuQOzh9PLqcOyp1sHlMauBzfm0CUAsYT5/wHPisggABEZJiKfjn0/K/Z6hRPXxPmuC03TekAnYZqWHv6I2ZPR+fWYUuovwPeAP2D2vozixByfXMxfuk2YQ2FHgR/HHrsb2BUb3voK5vymc1mKmQgsO8ftU8SGGp8APogNe03r9SvtvXsAF7AR8/W+ijksCOZ78GfMBGUN8Nq5GlFK/R4z9v8GWjF7CfvFHv4h8N3Ya3pYKbUXs4fqXzETz72YPY2dP3PvwlyMcAx4FHj5fC8glkx+BFyOOezb6WXMz29/7PX99TxtbAV+ALwPNGDOpzvZtzCHHP8a++zfB0pij42J3W6LxfG8UmrJ+WLWNK17oudWapqmaZqmJZ/uCdM0TdM0TbNAwpOw2HyItSLyVux2sYisFJEGEXlFRFyJjkHTNE3TNC3VJKMn7CHM5dWdfgQ8q5Qagzk/4++TEIOmaZqmaVpKSWgSJiKFmNuA/Cp2W4BrMSfGglmU8dZExqBpmqZpmpaKHAlu/zngm5irpcCsUdQcq2QN5jYYw852oIh8GbPeED6fb/K4ceMSHGpyRFULhgrjtPW3OhRLqXCEjh27cAweiCO/V8W9NU3T+j7DILhtJ45+BTgG9Ov++WksqtoxVCD2e7Hb3cr6hJqamiNKqYHdPS9hSVhsw9lDSqkaObFx7dne3bMuz1RK/RL4JUB1dbVavXp1QuJMtkBkO82h9+mXdTNZ9qFWh2MZpRQNfzsX36QKhn33a1aHo2mallTta+rY/bV5DH9qHtlTJ1kdjmWUUhwOLsQhefRz32h1OHEjIufbfaNLInvCrsDc7+xGwI1Zl+g5IF9EHLHesELMqt4ZI8s+HLATjO7M6CRMRPCUluDfsNnqUDRN05LOv9782eeZMNbiSKwVUceIqhaynVVWh2KJhM0JU0p9WylVqJQqwiwQuUgp9QVgMXB77GlfBN5MVAypyCZOsuyXEozuINNrtHnLxhE+cJDI0SarQ9E0TUuqwPrNZBUPx55zvi1S018wsgMQsuxFVodiCSvqhH0Lc9+xbZhzxH5tQQyW8thHYig/YeOg1aFYylM+AQD/+k3dPFPTNC19KMPAv2ELntKS7p+c5oLRnbhsl2AXj9WhWCLRE/MBiG1vsST2/Q5gSjLOm6rMIUmbefHZL+n2+enKM6YYcbnw128i9+rLrQ5HO4twOMy+ffsIBoNWh6L1ktvtprCwEKfTaXUo2mlCe/ZjtLXjLUuPBWcXKmI0E1FN5Doy9+d/UpIw7VQ2ySLLVkgwuoMcNQ2zckfmEacTz4Qx+Ov1vLBUtW/fPnJycigqKsrY67QvUkpx9OhR9u3bR3FxsdXhaKfpmg+W4UlYMLoTALc9c69RvW2RRdyOkURVG2HjiNWhWMpbNp5gw3aMgO5pSUXBYJD+/fvrBKyPERH69++vezBTVGD9Zux5ObgKM3dxFphJmNM2CLstc+fF6STMIm77CMwhyR1Wh2IpT/l4iBoENjVYHYp2DjoB65v055a6/Bs24ykdl9GfUdRoJWwczuheMNBJmGVs4sZlG5rxqyS9pSUggr9+o9WhaJqmJVykuYXQnv0ZPx8sGN0FZPZQJOgkzFIex0iiqoWIOmZ1KJax52STVTy8a46Epp1ORLj77ru7bkciEQYOHMisWbMAOHjwILNmzaKyspIJEyZw441mwcddu3bh8Xioqqrq+nr55ZcteQ2a1imwcQug54MFoztxSD8ctszeMUVPzLeQWRdlOcHIDpyuzN3GyFs2nuPvL0VFo4jdbnU4Worx+XysX7+eQCCAx+PhvffeY9iwE7udzZs3j+uvv56HHnoIgLq6uq7HRo0aRW1tbdJj1rRz8a/fDHY7npLRVodimajyEzIayXZMtjoUy+meMAvZxYPLNiTj54V5K8Zj+AN07NxjdShairrhhht4++23AViwYAFz5szpeqyxsZHCwsKu2xUVFUmPT9N6KrB+M+4xI7G5s6wOxTLBSGxVpCOzhyJB94RZzm0vpiX8AWGjCaetwOpwLNHZLe+v34R7tP5Pmao++dmvCG7bGdc23aOLueSf7uv2eXfeeSc/+MEPmDVrFnV1dcydO5fly5cD8I//+I/ccccd/PznP+dTn/oUX/rSlxg61Fx1tn37dqqqTmyH8rOf/Yyrrroqrq9B03rKCIUJbGqg4NbPWB2KpYLRHdglH4dk9sbloJMwy3UmYcHoDpy2zOyadV4yCMfA/vjrN9Fvdvps4KrFT0VFBbt27WLBggVdc746ffrTn2bHjh288847/OlPf2LixImsX78e0MORWmoJbt2OCoXwxnYLyURRFYgNRU7M6NWhnXQSZjG7zYfTdgnByA5ynJmZhIkI3rJx+Ov19kWprCc9Vol0yy238PDDD7NkyRKOHj16ymP9+vXjrrvu4q677mLWrFksW7aMyZMz8/+Tlrr8deYqcG/FeIsjsY45FKlwO0ZaHUpK0HPCUoDHXkxEHSNiHLc6FMt4y8cTOXSE8MHDVoeipai5c+cyb948ysvLT7l/0aJF+P1+AFpbW9m+fTvDhw+3IkRNOy9//SZcw4fhyM/cFYHB6HbskqeHImN0EpYCOuukZPIE/a7NvHVvmHYOhYWFXSsgT1ZTU0N1dTUVFRVMnz6d++67j8suuww4MSes8+unP/1pssPWNCC2aXf9JrzlmdsL1jkU6bGP1EORMXo4MgXYbTk4bYMIRneQ7ZxodTiWcI8cgc3jxr9+M3mfmmF1OFoKaWtrO+O+mTNnMnPmTAC+8Y1v8I1vfOOM5xQVFREIBBIdnqb1SMfufRitbXgrMnc+2ImhyFFWh5IydE9YinDbiwkbR4gYrVaHYglx2PGUlujK+ZqmpaVArJc/k3vCzFWReijyZDoJSxFuuzlJMZOHJL3l4+nYsYdoW7vVoWiapsWVv24jjn4FOIdeYnUoljCHIg/g1kORp9BJGKBUFBW0tlCow5aLQwYQjMa3DlNf4ikfD4ZBYONWq0PRNE2LK3/9RrwV4zM2AemImkORHr0q8hQ6CQM4vhIO/h4VsnZlnsdRTNg4SNQ4cw5MJvCOHwt2m56cr2laWgkfOkz4k8NdC5AyUSCyA7vk4hDrtuhTSqHa6lFG2LIYTqeTMICcKrC5oGkJSinLwnDbzcmKgQwdkrR5PbhHF+skTNO0tOKvi80Hy9D6YEaqDEX6G+Don8G/2boYTqOTMEDsXsi7AoK7IbDdsjgctrzYkKR1MVjNWzaewKatqEjE6lA0TdPiwl+/yfwjc2SR1aFYIhjdhTkUad2qSKUi0LQEnAPAV2pZHKfTSVinnEpw9ov1hlmXAHgcIwkbhzJ2laS3fDwq2EGwIXPnxmmnEhHuvvvurtuRSISBAwcya9asU5732c9+lunTp59y32OPPcawYcNOqRXW3NyclLg1rZO/biOe0hLEYbc6FEukwlAkLash2gIF1yCSOqlP6kRiMRE7FFwDkWZoWWtZHJ1Dkpm6StITW77tX6+HJDWTz+dj/fr1XTW/3nvvPYYNG3bKc5qbm1mzZg3Nzc3s3HlqAv+1r32N2trarq/8/Pykxa5p0dY2OnbuydjSFIYKEjL2WzoUqSJt5txvz2jEM8KSGM5FJ2EnEU8xeEbC8Y9QUWvKJDhsuThtAzN2SNI5oB/OIYP1vDDtFDfccANvv/02AAsWLGDOnDmnPP6HP/yBm2++mTvvvJOFCxdaEaKmnZV/w2ZQKmOLtJ4YirRwVWTzclAGFMy0LoZz0BXzT1cwEw7Mh+YV0P/TloTgto+kNbySiNGCw5ZrSQxW8paNo72mDqVUxi7nTkXG4pdRh3fHtU0ZOALbNfd0+7w777yTH/zgB8yaNYu6ujrmzp3L8uXLux5fsGABjz76KIMHD+b222/n29/+dtdjzz77LL/5zW8AKCgoYPHixXF9DZp2Pv66TWC34xk/1upQLBGMbI8NRQ6w5PyqoxHaN0DuZYgz9XrBdU/YacTZD3ImQls9KnTQkhgyfUjSWzGByLEmwvs/sToULUVUVFSwa9cuFixYwI033njKYwcPHmTbtm1ceeWVjB07FofDwfr167seP3k4UidgWrL56zbiKRmFzZ1ldShJZ6ggHRauilRKQdNisHkhb1rSz98TuifsbPKnQ/tGOLYYNfiOpF88jthekoHIdrKdVUk9dyro7Lb3123EVTjE4mi0Tj3psUqkW265hYcffpglS5Zw9OjRrvtfeeUVmpqaKC4uBqClpYWFCxfy+OOPWxWqpgFgdIQIbm6g39/O6v7JacgcijS6doRJOv9m6DgA/T6N2FIzCdY9YWchNjfkXwkd+8BvTfV2t30UEXWEiHHckvNbyTWiEHteLu3rNlgdipZC5s6dy7x58ygvLz/l/gULFvDOO++wa9cudu3aRU1NjZ4XpqWE4JZtqHAkYyflByM7sEsOTlvyhyKVEYKmZeAaDNmpU5LidDoJO5fscnAOhKalllTX9XTtJZl5E/RFBG/lBPx1OgnTTigsLOShhx465b5du3axZ88epk07MdRQXFxMbm4uK1euBMw5YSeXqNi1a1cyw9YyWOcCI09Z5iVh5lCkhasiWz6GaGvKlaQ4nR6OPAcRG6rfNXDwd2Z9kfzp3R8UR3ZbNk7bYAKRHWQ7JyX13KnAW1lK67K/Ej50BOcgayZ0aqmhre3MbbxmzpzJzJkzAdi/f/8Zj69ZswaAqVOn8thjjyUyPE07J3/9JlwjCnHkZ94CKyuHIlWkxUzCvCWIuzDp5++N1E0PU4C4h4N3DLSsREWSXzzVYx9FRB0lYmReccmT54Vpmqb1Ncow8NdvytihyEBsVaTTNjD5J29aZv5bMCP55+4lnYR1J/9qUMqsM5JknX9BBDJwSNI9qgib14N/nU7CNE3rezp27sFoa8ebgZt2R1WAkLEfj31U0ociVXC/OSE/txpx5CX13BdCJ2HdEGc+5E6G9o1mvZEkstt8uGyXEIxkXqkKsdvxlo/X88I0TeuTOueDeSszLwkzf2cp3EneK9IsSbEI7NmQOyWp575QOgnribxpYPfBsUXmh5xE5irJY4SNpqSeNxV4K0vp2LWXSHPmrRDVNK1v89dtxDGgH85LBlkdStIFo9txSAEO6ZfcE7dvgNBByL8KsbmSe+4LpJOwHhCbC/KvglAjtCd3Ox13bKuHYCTzhiS9leayYn+d3sJI07S+QymFv24j3ooJGbfrR9RoI2Q04nYkdyhSGSFz2pBrCPj6Tu+jTsJ6yldq1htpXmZ+2EliFy8u21CC0e1J74WzmqdkFOJy6SFJTdP6lHDjQSKHj3b9IZlJArGdXjz25A5FcnwlRNuh37V9KvHVSVgPiQgUXAvRNmhZldRzm0OSzUTUsaSe12ridOIpLcGvi7ZqmtaH+GvNn1mZmISZQ5EDcNiSt0+jCjebpaR8E5CsvrXLSsKSMBFxi8gqEVknIhtE5Pux++eLyE4RqY199Zl9ecQ9DLzjoGU1KpK8eUpuRzEgGTlB31s5geC2XUTb2q0ORbNIdnb2Kbfnz5/Pgw8+eN5jlixZwqxZ8d0q5rnnnuPll18G4LHHHmPYsGFdBWD/+Mc/AlBfX8+9994b1/NqfU/7uvXY83LJKrrU6lCSKmK0EDYO4UnyhHyal4KIOW2oj0lkT1gHcK1SqhKoAj4jIp1lrb+hlKqKfdUmMIb466w70lmHJAns4sFlG0ogA4ckfZWlYBj412+2OhQtg0Sj0VNuRyIRXnjhBe66666u+07eGLxzU/Hy8nL27dvHnj17khqvllr86zbircy8+WCdO7y4kzgUqYJ7wN8AuVMRR07SzhsvCauYr8xsobPUtTP21eczCHHkonIvg+MfoYITk1aN1+MYxfHQMiLqKE7JnAryngklYLfjr9tIzrTJVoeT0dSxRRA6FN9GXYOQftde8OH33nsvs2bN4vbbbwfMXrPOCvstLS3Mnj2bLVu2MGPGDJ5//nlsNhvvvvsujz76KB0dHYwaNYoXX3yR7OxsioqKmDt3Lu+++y4PPvggd955Z9d5Fi1axKRJk3A4uv+RefPNN7Nw4UK++c1vXvDr0vqu8KHDhBsP0u/2zNu0OxDZjtM2GIctOcmQUgYcWwz2HMitTso54y2hc8JExC4itcAh4D2l1MrYQ0+ISJ2IPCsiqbm1+fnkTjE/9KZF5kWQBG57MWAjENmWlPOlCps7C8+40XpeWAYLBAKn7P04b968Hh23atUqnn76aerr69m+fTuvvfYaR44c4fHHH+f9999nzZo1VFdX88wzz3Qd43a7WbFixSkJGMAHH3zA5Mmn/hHw85//nIqKCubOnUtT04kSMtXV1SxfnvzizlpqaI/NB/Nl2HywsNFERB1N7oT8tnoIH4aCqxGbM3nnjaOE7h2plIoCVSKSD7wuImXAt4FPABfwS+BbwA9OP1ZEvgx8GWD48OGJDLPXxOZEFcyAI29D2wbIKU/4OW3iJstWSCC6nRw1NaO6ub2VpRz93f9gdHRgy+p7OXu6uJgeq4vh8XiorT0xa2H+/PmsXr262+OmTJnCyJFmiZc5c+awYsUK3G43Gzdu5IorrgAgFAoxffqJfWHvuOOOs7bV2NjI+PEntp954IEH+N73voeI8L3vfY+vf/3rvPDCCwAMGjSIAwcO9P6FamnBv24DtmwfWSNHWB1KUnWWUeosq5RoyuiA5hWQVQjekqScMxGSsjpSKdUMLAE+o5RqVKYO4EXgrGVtlVK/VEpVK6WqBw60YO+p7njHQdZQaF5uXgxJ4HGMxlBthI1PknK+VOGtmACRCIGNW60ORUsxDocDwzB7o5VShEInysec/oeKiKCU4vrrr++ay7Vx40Z+/etfdz3H5/Od9Twej4dgMNh1e/Dgwdjtdmw2G/fffz+rVp1YMR0MBvF4PHF5fVrf41+3AW/5eMRutzqUpFFKEYhux2Ubil3O/n8o7o5/BEYACq7p050SiVwdOTDWA4aIeIBPAZtFZEjsPgFuBdYnKoZEMktWXAOGH47/NSnnzLIXAQ4C0cwakvSWjQMRvY+kdoaioiJqamoAePPNNwmHw12PrVq1ip07d2IYBq+88gpXXnkl06ZN44MPPmDbNvP/kN/vZ+vW7pP78ePHdx0DZs9Yp9dff52ysrKu21u3bj3ltpY5wkePEdp7AG9VZn3+EXWMqGpO2oR8FW6CljXgK0OyBiflnImSyJ6wIcBiEakDPsacE/YW8FsRqQfqgQHA4wmMIaEka4hZxLWlxrwoEswmTtz2EQQjOzBHejODPScb96giXbRVO8P999/P0qVLmTJlCitXrjylJ2v69Ok88sgjlJWVUVxczOzZsxk4cCDz589nzpw5VFRUMG3aNDZv7n7l7Q033MCyZSdWRH/zm9+kvLyciooKFi9ezLPPPtv12OLFi7npppvi+0K1PqHzD8VMmw9mzlUWPI7i5JywaQmIAwr6XkmK00lfKHlQXV2tejIHxAoq0gYHfg3uEcigWxN+vmBkF02hP1OQdQNue2rNlUukT376K5reepdxb/8WcfbNCZh90aZNm06ZC5XJZs+ezVNPPcWYMWPO+ZyOjg6uvvpqVqxY0aOVlImmP7/kanz2/3L8z4speeu3iCMzhiOVUhwOLsAh+fRz35j48wV2waFXzf0h86Ym/HwXSkRqlFLdLtnUFfMvkjiyzQ2+A9tQgd0JP1+W/VIEV8btJemtnIDqCBHYmnkFa7XU8OSTT54yDHk2e/bs4cknn0yJBExLPv+6DXjKx2dMAgYQNg4RVa24k1CgVSkDmhaDIx9y06NkkU7C4iF3MjjyklKyQsSO2z6SYHQnSkUSeq5U4q0wN2TVpSo0q5SUlDBjxozzPmfMmDHMnDkzOQFpKSXS3ELHzj0ZNxRpFmi14bYXJf5krbUQPmqWpJD0+ENHJ2FxIOKAgqvNi6NtXcLP53GMQhEmGM2cqtyOgnxcwwvx1+nJ+ZqmpZ7On02ZtF9k56rILPtwbAku+amiATj+IbiHg2d0Qs+VTDoJixfPGMi6FJo/NC+WBHLZhmLDSzDTVklWTsBfvxEVzZxFCZqm9Q3+deuRLBeecemTIHQnZDRiKH9yCrQe/xCMjj5fkuJ0OgmLExGBfteAETTrlyT0XDbcjpEEo3swVHJqlKUCX2UpRpuf4PbEz73TNE3rDf+6jXhKSzJq4VAwug3BQZY9sYVpVeiIORSZXYG4UrBu6EXQSVgciWsQZFdA61pU+GhCz+WxjwaiBKO7EnqeVNLZze+v7ZOl5TRNS1PR1jaC23Zm1HwwpaIEIjvIshdhk8QlnkqpWEkKF+RfkbDzWEUnYfGWf4V5sRxbTCLLfzhtg7BLbkbtJekcNADXsCG06yQso2RnZ59ye/78+Tz44IPnPWbJkiXMmhXfDZSfe+45Xn75ZQB+//vfU1pais1mO2MLpR/+8IeMHj2akpIS/vznPwPm9kgzZswgEsmcxTSZxF+/CZTKqPlgHdG9KDrwOM5dsiUuAjsguAvyL0fs3sSeywI6CYszsXshf7p50QQSV05BRPDYRxEy9hNV/oSdJ9V4q8rwr1uv54VpCRU97fqKRCK88MIL3HXXXQCUlZXx2muvnbFacuPGjSxcuJANGzbwzjvv8A//8A9Eo1FcLhfXXXcdr7zyStJeg5Y8/nUbEKcDz4SxVoeSNIFoAzbcZNmGJewcSkXNXjBHP8ipSth5rJQeazxTTc5EaF0HTUtQniJEElMzxu0YTVuG0yfZAAAgAElEQVRkLcHIDnzOzNgmwzexjOa33yO4fReescnZIkMzHQ99QMSI7zC7w9afPNeFDzHce++9zJo1i9tvvx0we83a2toAaGlpYfbs2WzZsoUZM2bw/PPPY7PZePfdd3n00Ufp6Ohg1KhRvPjii2RnZ1NUVMTcuXN59913efDBB7nzzju7zrNo0SImTZrUVf/rXAVQ33zzTe68806ysrIoLi5m9OjRrFq1iunTp3Prrbfy7W9/my984QsX/Hq11NS+bgPucWOwZSV2hWCqMFSIYHQ3Xse4hP1+A6B1LUSaYNBtiT2PhXRPWAKI2KFgpnnxtK5N2Hmctn44pF9G7SXpnVgOgH9tvcWRaMkSCASoqqrq+po3b16Pjlu1ahVPP/009fX1bN++nddee40jR47w+OOP8/7777NmzRqqq6t55plnuo5xu92sWLHilAQM4IMPPmDy5O6LQ+7fv59LL72063ZhYSH79+8HzN6zjz/+uEexa32H4Q8Q3LodXwbtFxmM7gSisbnJiaGifmj+CNxFiGdkws5jNd0TliiekeAuguaPUL4JCRvL9jhG0xpeRcRoxWHLScg5UolzQD9clw6lfe16+t+R+G2itBMupsfqYng8Hmpra7tuz58//4x5WGczZcoURo40f3jPmTOHFStW4Ha72bhxI1dcYb6WUCjE9OnTu4654447ztpWY2Njj7b/Ods80M7l9Ha7HZfLRWtrKzk56f9/NVP4N2yGqIG3coLVoSRNILINu+TitCVw8+zmD0CFzKoDaUwnYQkiIqh+18CB+ebF1P/6hJzHbTeTsGB0G9m2iQk5R6rxVpXRsmgFKhpF7OnZRa31jMPhwDDMXSqUUoRCoa7HTq8lJCIopbj++utZsGDBWds7eQPwk3k8HoLBYLfxFBYWsnfv3q7b+/btY+jQoV23Ozo6cLvd3baj9R3ta9eDw4G3LDP26IwqPyFjP9mOiQmr16VCh6GtDnImIs7+CTlHqtDDkQkkzv7m/LC2OvOiSgCHLQenbXBGrZL0TSzHaPcTbNhpdSiaxYqKiqipqQHM+VjhcLjrsVWrVrFz504Mw+CVV17hyiuvZNq0aXzwwQds22b+f/H7/WzdurXb84wfP77rmPO55ZZbWLhwIR0dHezcuZOGhgamTJkCwNGjRxk4cCDODKojlQn8a+vxjB+DzZMZyXUwsg1QuB2JGYpUSsGxRWDLgrzp3R/Qx+kkLNHyppsX07FFCStZ4bGPJqKOETaOJaT9VOOtMpeB61IV2v3338/SpUuZMmUKK1euPKUna/r06TzyyCOUlZVRXFzM7NmzGThwIPPnz2fOnDlUVFQwbdo0Nm/e3O15brjhBpYtW9Z1+/XXX6ewsJCPPvqIm266iU9/+tMAlJaW8vnPf54JEybwmc98hv/4j//AHuutXbx4MTfeeGOc3wHNStF2P4Et2/BNzJz5YIHoNhwyAKetIEEnaICOvZB/BWL3JOYcKUQSWcsqXqqrq1VP5oCkKtW6Fo79BQbegnjjv4Q5qvwcCvwGn6OSXNfUuLefirbd/SCuoYMZ/qPvWR1KWtu0aVOP5kJlgtmzZ/PUU08xZsyF1UW67bbb+OEPf0hJSUmcIzs3/fklVutHq9n7yOOMePYH+CZVWB1OwkWMZg4HXyHHOY1sZ2Xc21cqAgdeBHHCkHsQ6bv9RCJSo5Sq7u55ffcV9iXZleDsD01LzYsszuziJctWSDC6LaEFYlOJr6oMf91GVETXC9OS48knn6SxsfGCjg2FQtx6661JTcC0xGtfW2/WByvNjM+1c9pLwlZFttRA5Hhsf8jMSE8y41VaTMQGBdeaF1dLTULO4XGMIaraCBkX9kuir/FOLDOXhjckriCupp2spKTkjOKsPeVyubjnnnviHJFmNf/aejylJRlRH0wpRSDagMs2FLvt7AtYLqr9SBsc/yt4RiGexO5FmUp0EpYk4hkBnlFw/K/mxRZnbnsRgpNApCHubaeizpo87bpemKZpFoi2thFs2IkvVrsw3YWNw0RVS+K2KWpeASpq1tjMIDoJS6aCmeZF1rw87k2LOHHbiwlGdyRkyDPVOPrl4xpRqDfz1jTNEv51G8z9IjMkCQtEGwAbbntx3NtWHZ9A+3rInYQ4EzThP0XpJCyJxFkAuZOhfYN50cWZxzEGRYhgdE/c205FvonlsXlh6Z90apqWWtrX1iMuF57x6b9fpFIGwch23PYR2CS+Q69KKWhaDDZvRpSkOJ1OwpItb5p5sTXFv2SFyzYUm3gJRLuve5QOfFVlGIEgga16Xlg6y87OtjqEsyoqKuLIkSNWh6FZpH1NPd7y8dhc6V/3LWTsxyCAOxET8v1boGM/5F+J2NJ/bt3pdBKWZGLLgvyroOMA+LuvT9SrtsWGxz6ajuheDBWIa9upqLNemN5HUtO0ZIo0H6djx268GVIfLBBpQHDhtg+Pa7vKCEPTUnAOguzMeC9Pp5MwK2SXgmsQNC0zL8I48jjGAgaBSPr3DjkK8skqHq6Ltmag3bt3c91111FRUcF1113Hnj3mEPz27duZNm0al112GfPmzTtnL9rBgweZPXs2lZWVVFZW8uGHHwLwzDPPUFZWRllZGc899xwA7e3t3HTTTVRWVlJWVsYrr7zS1c7PfvYzJk2aRHl5eY+KvmrpwV+7ASAjJuUrFSYY3YXbXoxInHc6bPkYoq3QL3NKUpxO7x1pAREbquBaOLjQvAjzL49b2w7ph0P6EYg24HOWxq3dVOWtKqP5nUWoSARx6Ms5kT78ZDlHg/EdfuvvHsDll1zV6+MefPBB7rnnHr74xS/ywgsv8NWvfpU33niDhx56iIceeog5c+bwi1/84pzHf/WrX+Xqq6/m9ddfJxqN0tbWRk1NDS+++CIrV65EKcXUqVO5+uqr2bFjB0OHDuXtt98G4Pjx413tDBgwgDVr1vD888/z4x//mF/96le9fxO0Pqd9bT3iceMZl6B6WSkkGN2NIhz3VZEq0gotq8A7FnFfGte2+5LMTD1TgLgLwTsWWlahIi3xa1cEj2MMYeMgEeN49wf0cb6JZahAkMDmzNk7U4OPPvqIu+66C4C7776bFStWdN3/uc99DqDr8bNZtGgRDzzwAAB2u528vDxWrFjB7Nmz8fl8ZGdnc9ttt7F8+XLKy8t5//33+da3vsXy5cvJy8vraue2224DYPLkyezatSsRL1VLQe1r6/GWT8iIP/wCkQZs4sNlGxLfhpuXgVJQcHV82+1j0v8KSmUFV0NgBzQtg4Gz4tasxz6a1vBKAtEGcmzd7prQp3krzXkE/tr1eMvGWRxNeruQHqtkEZHzPv6d73ynqyertrb2rM8510KZsWPHUlNTwx//+Ee+/e1v8zd/8zfMmzcPgKxYkU673U5Er9LNCJGjTYR27yP/M9daHUrCRZWfDmMvPkdlXIcLVccBaN8EudMQR173B6Qx3RNmIXHkQW41+Dejgvvj1q7dlo3LNpRApCHttzFy5OeSNXKELtqaYS6//HIWLlwIwG9/+1uuvPJKAKZNm8Yf/vAHgK7HAZ544glqa2u7ErDrrruO//zP/wQgGo3S0tLCjBkzeOONN/D7/bS3t/P6669z1VVXceDAAbxeL3/3d3/Hww8/zJo1a5L5UrUU0zkHNRPmgwUj2wAV16FIpRQcWwR2H+RNiVu7fZVOwqyWOwXs2XEvWWFuY9RC2DgUtzZTlW9SOf76TRih+C5y0FKD3++nsLCw6+uZZ57hpz/9KS+++CIVFRX813/9Fz/5yU8AeO6553jmmWeYMmUKjY2NpwwdnuwnP/kJixcvpry8nMmTJ7NhwwYmTZrEvffey5QpU5g6dSr33XcfEydOpL6+nilTplBVVcUTTzzBd7/73WS+fC3FtK+tx+bz4h4z0upQEs4facBpG4DT1i9+jbZvhNAnkD8Dsbni124fJX2hp6S6ulqtXr3a6jASRrVthKN/hP6fQeK0TNdQIQ4GXsbrGEee68q4tJmqWj9Yxd5//TdGPPd/MuKv02TatGkT48ePtzqMHvP7/Xg8HkSEhQsXsmDBAt58802rw7JMX/v8+oJtdz2Aa/gwhj+Z3sl42DjKkeCr5Dovx+eMz89VZYTgwK/BngOXfKHbaQR9mYjUKKW6nQ+ke8JSgW88uIZA83LzIo0Dm7hw24sIRLajVDQubaYqb1UZ2G20r6mzOhTNYjU1NVRVVVFRUcHzzz/P008/bXVIWhoJHzpCaH9jRvyxZ+5DbMPtiOMK0OOrINoO/a5N6wSsN3QSlgJEBPpda16cx1fGrV1zG6MgHdG9cWszFdl9XjwlY2iv0UlYprvqqqtYt24ddXV1LFu2jNGj07+EgJY8nXNP032/SKUMAtEGsuyXYhdPfNqMHDdLMnnHI1lD49JmOtBJWIqQrCHgmwAtq1Hh5ri0mWUrxIY7tvFqevNNriCwuYFou9/qUDRNS1P+teux5WTjHl1kdSgJFTL2Yyg/Hnsc98VsWgoiUDAjfm2mAZ2EpZL8q8yLtHlpXJoTseN2jCIY3Y2hOuLSZqryTaqAqIF/3QarQ9E0LQ0ppWhfW4+vqgyxpfevTn9ka1y3KVLBveDfCrlTEEdOXNpMF+l9JfUx4siB3Kngb0AF98SlTY99DBAlGE3vbYw8pSWIy6XnhWmalhDhA58Q/uQQvskVVoeSUIYKEYzuwuMYFZdtipQy4NhiczJ+7mVxiDC96CQs1eRWgz0Xji02L96L5LQNwi75+CNb4xBc6rJlufCWj9fzwjRNS4jOny2+yZUWR5JYwehOIBK/oci29RA+BAVXIzZnfNpMIzoJSzFic5qV9MOHoe3iC5CKCF7HWMLGJ2m/jZFvcgUdO3YTaYrPnDpN07RO7TXrcAzsj+vS9J5UHohsxS65OG2DL7otZXRA8wrIGgbekjhEl34SloSJiFtEVonIOhHZICLfj91fLCIrRaRBRF4REV2t7XTesZBVCM0rUEbwopszhyTN/1zpzDfJHCZoX6Or56eTffv28dnPfpYxY8YwcuRIHnzwQTo64j/HccmSJXz44Yddt3/xi1/w8ssvA3Dvvffy6quv9qq95557ruv4Y8eOcf311zNmzBiuv/56mpqaznh+bW0t06dPp7S0lIqKCl555ZWux+69916Ki4upqqqiqqqqq/L/W2+9xaOPPtrr16r1jjIM2tfU45tckdalFSJGKyHjAB7H2Pi8zuN/BcMPBdek9ft2MRLZE9YBXKuUqgSqgM+IyDTgR8CzSqkxQBPw9wmMoU8yS1ZcA0YAmj+66PbMbYwKCUS3pvU2Ru6xI7Fl+/SQZBpRSnHbbbdx66230tDQQENDA4FAgG9+85txP9fpSdhXvvIV7rnnngtqKxKJ8MILL3RtIv7kk09y3XXX0dDQwHXXXceTTz55xjFer5eXX36ZDRs28M477/DP//zPNDef6NX993//966tl6qqqgC46aab+J//+R/8fr0qOJGC23YSbWnNgKFIcyV95x/uF0OFm6ClBnylSNYlF91eukrYBt7K/G3fFrvpjH0p4Frgrtj9LwGPAf+ZqDj6KnENRmWXQ+taVE4l4ry4bSO8jhKaQ38hZBwgyz4sTlGmFrHb8VWV6cn5CfLj97ey9VBb90/shbGDsnn4U+eee7Jo0SLcbjdf+tKXAHOj7GeffZYRI0bwxBNP8Oqrr7J69Wp+/vOfAzBr1iwefvhhZs6cyQMPPMDHH39MIBDg9ttv5/vf/z4ARUVFfPGLX+R///d/CYfD/P73v8ftdvOLX/wCu93Ob37zG372s5/xl7/8hezsbB5++OFTYqqpqeFf/uVfaGtrY8CAAcyfP58hQ4acEfekSZNwOMwfsW+++SZLliwB4Itf/CIzZ87kRz/60anvxdgT78PQoUMZNGgQhw8fJj8//5zvj4gwc+ZM3nrrLT7/+c+f763WLsKJ+WDpOylfKYU/0oDLdgkOW+7FN9i0BMRurvrXzimhc8JExC4itcAh4D1gO9CslIrEnrIPOGtGICJfFpHVIrL68OHDiQwzdeVfCeIwL+aL5LYXIbgIRLZcfFwpzDe5gnDjQUKNB60ORYuDDRs2MHny5FPuy83NpaioiG3btp332CeeeILVq1dTV1fH0qVLqas7kZwPGDCANWvW8MADD/DjH/+YoqIivvKVr/C1r32N2tparrrq7L84wuEw//RP/8Srr75KTU0Nc+fO5Tvf+c4Zz/vggw9OifvgwYNdidqQIUM4dOj8e7quWrWKUCjEqFGjuu77zne+Q0VFBV/72tdOGY6trq5m+fLl521PuzjtNevIKroUZ/847qGYYsLGYaKqGY/j4ifkq8BuCGyHvGmIIzsO0aWvhPWEAShzv5wqEckHXgfOtonZWcfHlFK/BH4J5t6RCQsyhYndh8qbBs3LUIGdiKf4wtsSBx7HKAKRBgwVwpamU/G65oXV1OGadb3F0aSX8/VYJYpS6qxzSXoyrP673/2OX/7yl0QiERobG9m4cSMVFeb1cdtttwEwefJkXnvttR7Hs2XLFtavX8/115vXVjQaPaMXDKCxsfGC92xsbGzk7rvv5qWXXsIWq0f1wx/+kEsuuYRQKMSXv/xlfvSjHzFv3jwABg0axIEDBy7oXFr3jFAYf91GCmb9jdWhJFQguhWw47Zf3MbkShnQtAgceZA7ufsDMlxSVkcqpZqBJcA0IF9OFB8pBPRPj/PJnQSO/FjJiovbA9JjH4siktY1w1wjCnH0L9DzwtJEaWkpq1evPuW+lpYWDh48SElJCQ6HA8M4UcolGDQXsuzcuZMf//jH/OUvf6Guro6bbrqp6zGArKwswBzejEQi9JRSitLS0q65WfX19bz77rtnPM/j8ZxyvsGDB9PY2AiYSdagQYPO2n5LSws33XQTjz/+ONOmTeu6f8iQIYgIWVlZfOlLX2LVqlWnvGaPJz5by2hnCmzYjOoIpflQZJRAZDtuexE2ybq4xtrWQfioWZIiDnXG0l0iV0cOjPWAISIe4FPAJmAxcHvsaV8E3kxUDOlAxAEFMyFyDFrXXVRbTttg7JKX1qskRQTfpAra19al9SKETHHdddfh9/u7VhlGo1G+/vWv8+CDD+LxeCgqKqK2thbDMNi7d29XctLS0oLP5yMvL4+DBw/ypz/9qdtz5eTk0Nraet7nlJSUcPjwYT76yFwwEw6H2bDhzF0axo8ff8pw6S233MJLL70EwEsvvcRnP/vZM44JhULMnj2be+65h8997nOnPNaZwCmleOONNygrK+t6bOvWrafc1uKrvaYO7Da8Ven7Hgeju1EEL3ooUkWD0PwhZF0Knouf3J8JEtkTNgRYLCJ1wMfAe0qpt4BvAf8iItuA/sCvExhDevCMAvcIOP4hKhq44GY6a4aFjMa0rhnmm1xBtOk4HTt2Wx2KdpFEhNdff51XX32VMWPG0L9/f2w2W9c8rCuuuILi4mLKy8t5+OGHmTRpEgCVlZVMnDiR0tJS5s6dyxVXXNHtuW6++WZef/11qqqqzjnHyuVy8eqrr/Ktb32LyspKqqqqTllR2emGG25g2bJlXbcfeeQR3nvvPcaMGcN7773HI488AsDq1au57777AHP4dNmyZcyfP/+MUhRf+MIXKC8vp7y8nCNHjvDd7363q+3Fixdz00039eTt1C5Ae806POPHYvd5rQ4lYQKRLdjES5at8OIaOv4hGEHop0tS9JT0hd6C6upqdfqQRKZRocPQ+DLkVCL9PnXB7USNNg4Ff0u2YxI5rvTcQiJ86DANn7ufwQ/Opf/nbrE6nD5t06ZNFzy3KRE+/PBD5syZw2uvvXbGhP1UM3v2bJ566inGjElcj8DBgwe56667+Mtf/nLWx1Pt8+troq1tbLnlHgb83e0M+vu7uj+gD4qqdg4FfovPUUmua+oFt6PCR+HAS5BdjvTX83FFpEYpVd3d83TF/D5CXAMhpxJa15kJ2QU6UTOsIW2H65yDBuIqHKrnhaWhyy+/nN27d6d8AgZmbbDOYcRE2bNnD08//XRCz5HJ/Os2gGHgq07f+mCBSAOg8DousqL9scUgTsjvvtdZO0EnYX1J3hVgy4KmJReVQHkdY4mqVkJGYn9BWMk3qQL/ug2oyMUtZtB6thJRO1NJSQkzZsxI6Dkuu+yyrsKtp9Of28VrW70OcWfhnZD8lcHJYNYG24LTdgkO27nr0XXbTmAHBHdB/nTEnr7Dtomgk7A+ROweyLscgrEaLBfIrBnmTOuaYb7JFRj+AIHNDVaH0qe53W6OHj2qf6H3MUopjh49itvttjqUPq29pg5fZSniTM+Np8PGQaKq+aJ6wZSKwrEl4CiAnInxCy5D6PWjfU1OJbTVmr1hnqILWgIs4sRtH0Uwug1DXYlN0u8HjHdiGYjQvnod3rJxVofTZxUWFrJv3z4ytmByH+Z2uyksvMiJ1hksfPgooT37KJh14XNwU50/sgXBcXG1wVprzdX7A2cjYo9fcBlCJ2F9jIgdVXANHPoDtKyBvCkX1I7XUUIguplgdMfFzwVIQY68XNxjR9G2upaB995hdTh9ltPppLj4wosEa1pfdWKrovScD6ZUmGB0O277yAsu3q2ifnNFpLsIPBdX5DVT6eHIPkg8xeYFf/yvqGj7BbVh1gzLTeuaYdmXVRHYuIVou97cWNO03mmvWYc9P4+skSOsDiUhAtGdKMJ4LuaP8OYPwAhBwUxdkuIC6SSsryqYCSoCzSsu6HARweMoIWQcIGK0xDe2FOG7rAqiBv619VaHomlaH6KUor1mHb5JFYgtPX9NBiJbsEsuLtuZ2271hAodhrY6yKlCXAPiHF3mSM+rKwOIs585CbKtHhW6sM2qvXazflG69oZ5S0sQj5u2j2utDkXTtD4ktHsfkaNN+KrTc6uiiNFCyDiAxzH2gnqwlFLQtNhcrZ93eQIizBw6CevL8qeDzRPbV7L3q9fstpxYzbAt5qaraUacTnxVZbTrJEzTtF5oW21uEeeblJ5JWOcf3l77BZbeCGyD4B7Iu9xcta9dMJ2E9WFic0P+ldCxD/wX1pvldZQQVW2EjP1xji41+KqrCO1vJNR4Yb2FmqZlnvbVtbiGDcE1ZLDVocSdUopAdAsuWyF2W84FHB+BpqXg7A85Z69Rp/WcTsL6uuxycA40S1YY4V4f7rYXI2Thj2xOQHDWy77M/CGhe8M0TesJIxSmfW09vinpWfMqZBwgqtoufFV8yxqINEPBNYjoFOJi6XewjxOxQb9rINoKLb3fX1PEjscxhmB0F4a68M3BU5Vr+DAcgwbQtlonYZqmdS+wfjMq2NH1B1y6CUS2ILhw24t6fayKtsPxv4JnJOLp/fHamXQSlgbEPRy8Y6BlJSrS2uvjvY5xgBHbQyy9iAjZl1XRXlOntzDSNK1bbR+vBbsd78Ryq0OJO0N1EIjuwOMYfUGFvmleYa7KL5gZ99gylU7C0kX+1aAUNC/v9aFOW3+ctoH4I1vScnsaX3UVRls7gS3brA5F07QU1/5xLd7ycdi96TfhPBjdDkTx2Hs/FKk6DkJbPeROMlfna3Ghk7A0Ic58yK2G9o2ojgO9Pt7rGEdEHSNspN/2NL5JFbEtjPSQpKZp5xY51kywYQe+6vQcivRHtuCQApy2gb06zixJschcjZ83PUHRZSadhKWTvKlg911QyQq3fTSCA39kU4KCs44jP7aFkZ6cr2naeXTOHc1Ow0n5YeMoYeMQXse43tcG82+Bjv2QfyViy0pMgBlKJ2FpRGwuyL8KQo3Q3rtkyiYu3PaRBKPbMVTvV1mmOr2FkaZp3Wn/uBZ7Xi7uMem3D6K5At6Gx9G72mDKCMdKUgw0V+NrcaWTsHTjKwXXYGhehjJCvTrU6xiHIkwwuiNBwVnHV12ptzDSNO2clGHQtroWX3Vl2m1VpFSEQGQrbnsxNnH37uCW1ebq+366JEUi6Hc0zYgIFFwL0TZoWdWrY522S7BLflrWDPOUjjO3MIpVwtY0TTtZx/ZdRI81p+VQZDC6E0UIr2N8r45TkVZoWQneMeYqfC3udBKWhsQ9DLzjoGU1KnK858eJ4HWUEDY+IWI0JTDC5LO59BZGmqadW+ec0XSclO+PbIpt1j20dwc2LzdX3edfnZjANJ2Epa2CGea/TUt7dZg5X8CGP7Il/jFZzFddRWjfAb2FkaZpZ2j7eC1ZI0fgHJBe5RciRjMho7HXE/JVxwFo3wi51ebqey0hdBKWpsSRC7lTwL8VFdzb4+Ps4iXLPpxAZCtKpVdxU72FkaZpZ2MEggTqN+FLwyr55vQS6dWEfKUUHFtsrrbPm5q44DSdhKW13MvAngNNi1HK6PFhXsc4DAJ0RPckMLjkcw0fhmNgf72FkaZpp2hftx4VjpB9WXrNB1MqSiCylSz7COzi6/mB7ZvMVfb5V5mr7rWE0UlYGhOb0xyWDB2Ctg09Pi7Ldik28abdBH29hZGmaWfTvqoWcbnwVkywOpS4CkZ3YxCIbU3XM8oIQfMyc5W9rzSB0Wmgk7D05x0HWcOgeTnK6OjRISI2PPYSOoy9RI22BAeYXNlTJplbGG3aanUomqaliLaP1+KtKsWWlV69PoHIZmziI8t2ac8Palllrq4vuLb3RV21XtNJWJozS1ZcA4Yfjv+1x8eZfzkp/NH06g3zVVeC3UbbyjVWh6JpWgoIfXKI0J79aTcUGTFa6TD24rWX9Li+l4ocN+uCeceZq+y1hNNJWAaQrEvMbuWWGlS4Z6UnHLZcXLZC/JHNvZpPlursOdl4JpTQtrLG6lA0TUsBnQt10m1SfiC2wt3Ti6FImpaZ/3aurtcSTidhmSL/KhA7NC3p8SFex3gM1U6H0fPVlX1B9tRJBLfuIHI0vWqhaZrWe20f1+IY2J+sol4M2aU4pQz80S1k2Qpx2HJ6dkxwn7lHZO5l5up6LSl0EpYhxJENeZaJjXoAACAASURBVNMgsB0V2N2jY9z2Edjw4g9vTHB0yZU9dRJgzgPRNC1zqUiU9pp1ZF9WlVbznzqMfRiqDU8PK+QrpaBpsbmaPndKgqPTTqaTsEySOxkcedC0qEdDjCJ2PI70m6DvHl2MvV8+bSt1EqZpmSywaStGWzu+NJsP5o9swoYbt31Ezw5oXw+hg1Aww1xVryWNTsIyiIgDCq6G8FFo69keiuZeYwp/ZFNig0sisdnInjKR9tW1qKguVaFpmapt5Rqw27oKOaeDqPLTEd2DxzEWEXu3z1dGBzQth6yh5mp6Lal0EpZpPGMg61Jo/gAVDXT7dIcthyzbpfij6TVBP3vqZKItrQQ2NVgdiqZpFmn7aw3e0nHYc7KtDiVuApHNgNHzzbqPrzRXzxdck1ZDsn2FTsIyjIhAv2vB6IDjH/XoGHOCvj+tKuhnV1eCTZeq0LRMFT56jGDDjq45oulAKQN/ZBMu21Actu73e1ThZmipAV8pkjUkCRFqp9NJWAYS10DIroDWtajQkW6fn2UfEaugnz4T9O25OXgmjNVJmKZlqPbYnNDsaZMtjiR+Ooy9RFUbXkcPK/83LQGxmavnNUvoJCxT5V8B4oKmJebKmPMQseG1j6PD2EvEaE1SgImXPWUiwS3biDQ1Wx2KpmlJ1vrXGhwD+pE1qsjqUOLGH96IDS9ue1G3z1WBPRDYBnlTzdXzmiUSloSJyKUislhENonIBhF5KHb/YyKyX0RqY183JioG7dzE7oX86RDcBYEd3T6/c++xQBpN0M+eav4F3LZKr5LUtEyiIhHaV9eSPXVy2syDMivk78HrKOl2Qr5SBjQtAnsu5FYnKULtbBLZExYBvq6UGg9MA/5RRDr7SJ9VSlXFvv6YwBi088mZCI6CWG/Y+VcJ2m05ZNmG449s6fa5fYV77EjsBXl6SFLTMox//WaMdj/Z09JnPljnH8g9qg3WVgfhI1BwtblqXrNMwpIwpVSjUmpN7PtWYBOgN6NKISJ2KJgJkSZo7b43yOsYj4GfYLRnxV5TndhsZF82kfaPdakK7f9n787jpDrvO99/nnNO7Vt3swmx092AkAQIsQi0IJAl24rX2HGcxHZ2z3ji2E5mufEkM5mbm7mT18xkmbmTia3cxPZ4kcdO5HiTbGtFQiwCBIhFQDf7Jpburq59Oec888dpEIhuuliqTlX37/168cJUL+eLKXX96pzn+R4xnnjVFCaxexf7HeWW0NqhYO8nZMwctSFfOyVIvwqh6RCd16CEYiQNWROmlJoN3ANsGXros0qpN5RSf6+Uah/haz6tlNqmlNp2/vz5RsQcnyJzITwb0pvQTuGanxoyZ2Ko2JjqDIuvXOpVVRw45HcUIUSD5DZvJ7poIWYs6neUW6LkHMOlSDRQw4L8wU3gFqFj3Zi5FNvK6j6EKaXiwD8CX9BaZ4C/ATqBJcAZ4M+H+zqt9RNa62Va62WTJk2qd8xxy6usWAu64r07uubnegv0K+5JbDfToIT1FVu+ZKiqQm7oLcR4UD13nvLhY2NqV2TB3oup4oSMa9//Ulf7vKse8UWo4OQGpRPXUtchTCkVwBvAvqm1fgpAa31Wa+1or/nzbwG5UZXPVGCCtz4s9wa6cu6an+st0Fdj5myYlUoSWdAt68KEGCcu3q5srPSD2W6ainuaqHUHSo3ykj7wEijL2x0vmkI9d0cq4O+AN7XWf3HZ45c3wn0Y2FOvDOI6pFaDEYb+F69ZWWEacULmTIr2/jGzQD++ciml/b3Y6UG/owgh6iy3eTuBKZMIzb72WaNW4b0hNohY177lkC4egeIRSK1CmbHGhBOjqueZsPuBTwLr3lFH8Z+VUruVUm8Aa4Hfq2MGUSNlhqFtNZRPQPHat/KJWXfiUqLkjF5t0QriK+8Brclv3el3FCFEHbmVKvntu8ZMNYXWNgX7AGFzNqYaeX2b1g70vwhWGyTHxhnAsaJue1O11huA4Z7lUknRrOKLIbsLBtajI3NH3LocNKZjqiR5ey8Rq7vBIW+98PwuzLYU2U3bSD26xu84Qog6Kezeh1ssjZlqiqJzGE159Ib87C6w+2HSh2u6qbdoHGnMF5coZUD7WrAHvfuJjfh5iqh1J1X3LFV39NseNTtlGMTvW0rutR1oe2xcYhVCXC235XVUwCK2dJHfUW4Jb0F+G0Hj9hE/RzsFGHwVwrO83fCiqcgQJq6gIrMg0gWDm9F2bsTPi1rzAYt8dW/jwtVRYtVy3GyOwt79fkcRQtRJbvN2oovvxIiE/Y5y06ruBaruOWLWHde+tJreCG4F2teOiUuwY40MYeJq7WtAO5B+ZcRPMVSIiNlF0enF1eUGhquP2PIlYJrkNm71O4oQog4qZ85SOXZyzFRTeAvyTSLWyIWrunIecrsgsRgVnNi4cKJmMoSJq6hAOyTvhfxedPnMiJ8XC9wJ2BTtA40LVydmLEpsyZ1kN23zO4oQog4u1tCMhSHM1WWK9kEiZieGGv6sntbaq6QwQpCSSopmJUOYGF7qPjCiMDByZUXAmEjAmELe3nfNWotWEV+9nMqxk1ROjTx4CiFaU27zdgK3TyE4feT1U62iaB9EYxO17rrGJx2C0jFIrUaZkcaFE9dFhjAxLGWEoO1BKJ+GwsjrpKLWQhw9SMU92cB09ZFYtQyA7CZpzxdiLHFLZfLb3yCxennLr4vSWpO39xIwJhM0h7+bjNa2dxYs0AGJsXF/zLFKhjAxsvidEJwMAy+j3eqwnxIxOzEIk7dbf4F+cNpUgjOnk9sk68KEGEvy23ehKxXiq5b7HeWmVdyTOHqQ2LXOgmV2gJ0eWowvlRTNTIYwMSKvsmIdOFnIvDbC55hErAWUnePYbrbBCW+9xOpl5HfuxSkU/Y4ihLhFsq9uxYhFiS2u4QbXTS5f3YNBhLA5fN2EdvLeTbojc1GROQ1OJ66XDGHimlR4OkTnQ2Yr2h7+pt2xoaLAgr2vkdHqIr5qGdg2+a07/I4ihLgFtOuS27SN+PIlqEDA7zg3xXYzlN3jQ/eJHOEMV3oDaBvaH25oNnFjZAgTo2t/yPt94OVhP2waCULmrDFxP8noXQsw4jGyG2WXpBBjQenAIez+AeKrW/9SZMHeCxgjNuTrylnI7YbEPahAR2PDiRsiQ5gYlbJSkFwGhf3o0qlhP+fi/SSLzqEGp7u1lGURX7GU3ObtaNf1O44Q4iZlN24Fw2j5agqtqxTs/d59Io2rb8CttfbuD2lEoG2VDwnFjZAhTNQmuQLMOAy8MGwdRdCYhqlSQ+/UWlti9TKc9CDF/b1+RxFC3KTcxq1E7pyPlUr6HeWmFJ1eNJWRF+QXDkL5JLQ9gDJa/44A44UMYaImyghC20NQOQv5qwctpRQxayFV9xxV97wPCW+d+MqlYBiyS1KIFlc9d55S7xESLX4pUmtNvroHS3UQMG4b5uM2DKyHwCSI3+1DQnGjZAgTtYvdAcGpkH4F7Vau+nDEmo/CIl/d40O4W8dMJojetYCcrAsToqVdXNvZ6kNYxT2DrfuJBe4avucssw2cDHSs9Xa1i5Yh/1qiZkop6FgHTh4GN1/1cUOFiFjzKDq9OLrgQ8JbJ75qGaXeI1TPXfA7ihDiBuU2biUw7TaCs6b7HeWmFOy9KIJEzK6rPqbtHAxugUg3KjzTh3TiZsgQJq6LCk2F2ELIbEdX01d9PGbdDbhDN5dtXRffOcu9JIVoTW6xRH7H7pZvyXfcPCXnCFFrAUoNU7GRfhm0C+1rGh9O3DQZwsT1a3sQlIL0+qs+ZBlthIwZFKr7WrquIjhrOoGpU8jJECZES8pt24muVFv+UqTXv6iJWnde9TFdPgP5fZC8FxVoa3w4cdNkCBPXTVkJ7wbfhR506fhVH48G7sKlQMk57EO6W0MpRWLVMvLb38Atlf2OI4S4TrmNWzHiUaKLWrclX2uHgv0mIWMmlpF8x8c0DLwIRtT7eSxakgxh4sYk7gUzCf0vovWVfVohYwamaiNv7x62zqJVxFcvR1cq5Lft9DuKEOI6aNclu3k78RVLUZbld5wbVnQO4VIkFhimlqKwH8qnof1Bb/e6aEkyhIkbooyAtwahet5raL78Y0oRs+6i6p6n6p71KeHNiy25EyMeJbth+PtmCiGaU+lAL05/uqUvRWqtKdi7MVUbQePKjQXarXh3MAlOgdg1buQtmp4MYeLGRedBaDqkN6Dd0hUfiljzUATJ261bV6ECAeL3LSO7cSvaad31bUKMNxdb8mMr7vE7yg2rum9RdS8Qs4appchsBScL7WtbetOBkCFM3ASvsmItuEVIb7riY4YKELUWUHIO47g5nxLevMT9K3AGMxT27Pc7ihCiRtlXtxK9a0FLt+Tn7d0ovNqfy2k74w1h0fmocGtXbwgZwsRNUsEpXkNzdge62n/Fx6JDt9fIt/CtjOIrl6ICFtkNW/yOIoSoQeX0W5QPHSXxYOsuVrfdDCXnKFHrDox31lIMvOz9LpUUY4IMYeLmtT0AyoKBl6542DIShMxZFOz93m01WpAZixJbuojshi0tvclAiPEi+4r3hinx4Eqfk9y4gr0HUMTeUUuhS6e8BfnJZSirdc/yibfJECZumjJjkFoFxcPo4pErPhaz7kZTouj0+JTu5iUeWEn19FnKR66u4xBCNJfshi2EumYTnDrF7yg3xNUVCvZ+wuZcTCN+6XGvkuIFMOOQXOFjQnEryRAmbo3kUrDahior3l7EHjSmYqkJ5Kt7WvZMUvz+ofZ8uSQpRFOzB9IUdr9J4oHWPQtWtA+gqQ7dfeQy+b1QOQttD0klxRgiQ5i4JZQyof1hsPshu+uyxxWxwF3Yup+Ke9q/gDchMKGDyML5MoQJ0eSyG7eC1iRbdAjT2iVv7yFgTCFoTn77cbcC6VcgOBVid/iYUNxqMoSJWyfSCeFZMPgq2nn7Bt4RswuDMHl79zW+uLklHlhB6cAhqufO+x1FCDGC7CtbCNw2mVDXHL+j3JCycwxHZ64+Cza4GZw8dKyTSooxRoYwccsopbyzYW4F0hsve9wiai2k7BzDdgf9C3gTLl7eyL661eckQojhOIUi+e27SDy4smUHlby9G1PFCZtvD5G6mobMdogtRIWm+phO1IMMYeKWUsFJkFgMuV3oyttnjaKBOwGDvP2Gf+FuQmjWdIIzp8klSSGaVP61Hd4Nu1v0UmTVvUDFPUPUugulLntpTq8HpaDtQf/CibqpaQhTSnUqpUJD//thpdTnlFJyy3YxvNT9YIRg4MVLi/FNFSVidlOwD+Lq0ijfoDkl7l9BfscenGzrls8KMVZlN2zBTCWJ3tWaa6by1d0oLKLWgkuP6dJxKPRA6j6UlfAxnaiXWs+E/SPgKKW6gL8D5gDfqlsq0dKUGYHUaigdh+KhS4/HAosAm7y9z79wNyHxwEpwHHKbt/sdRQhxGV2tkt20lcTq5SjL9DvOdXN0nqLTS8Saj+Gd70BrF/pfBDMJiXt9TijqpdYhzNVe2+aHgb/SWv8eIBenxcgSiyHQAQMvXSpqDRgdhIwZFKp7WrK8NbJwHmZHG9lX5YbeQjST/M69uLlCyxa0Fqr7APfKBfm53VA9D+1rUEZgxK8Vra3WIayqlPol4FeBHw09Js8KMSKvsmIt2GnIvH7p8VhgES5Fik6vj+lujDIMEquXk9u8HbdS9TuOEGJIdsMWVDhEbNliv6NcN1dXydt7CZmzsYwUANotQXoDhKZDdN4o30G0slqHsF8HVgH/UWt9RCk1B/hG/WKJsUBF5kBkLgxuRjt5AILGtKHy1l0tWd6aeHAlbrFE/vVdo3+yEKLutOuS3bCF+Ip7MEIhv+NcN6+ctUzcumyATG8Ctwgda1t2p6eoTU1DmNZ6n9b6c1rrJ5VS7UBCa/1n1/oapdQMpdSLSqk3lVJ7lVKfH3q8Qyn1rFKqZ+j39lvw9xDNqv1h0Lb3ro6L5a2LsHWasnvC32w3ILZ0MUYsSnb9Jr+jCCGA0oFe7Av9Lbkr0itnfWOonPU277FqP2R3QPxuVLA1b70kalfr7siXlFJJpVQHsAv4ilLqL0b5Mhv4l1rrO4D7gN9RSi0E/gB4XmvdDTw/9GcxRqlAByTugdxudPksABGzE0PFyFdb72ySEQyQWL2c7IbX0HbrrWsTYqzJvLIFTG+pQKspOUdwdPbKs2ADL4GyoO0B33KJxqn1cmRKa50Bfh74itb6XuBd1/oCrfUZrfXrQ/87C7wJTAM+CHxt6NO+BnzoRoKLFtK2CowIDLyA1hqlTGLWXVTc01TdC36nu26Jh1bhZLLkd+71O4oQ45rWmuwrm4ktuQszER/9C5qI1pq8vQtTJQmZs7zHikeheNirpDBj/gYUDVHrEGYppaYCH+Pthfk1U0rNBu4BtgBTtNZnwBvUgMkjfM2nlVLblFLbzp+XW8W0MmWEvXd15VNQOABA1LoDRYBcC54Ni6+8BxUJyyVJIXxWPnqCyvFTJB5a5XeU61Zxz1B1zxOzFqOU4VVSDLwIVhskl/odTzRIrUPYnwA/BQ5prbcqpeYCPbV8oVIqjtcz9oWhs2k10Vo/obVeprVeNmnSpFq/TDSr+N0QmAQD69FuFUOFiFoLKDmHcdzWKj81QiESK5eS2bAZ7Th+xxFi3Mqu3whKkWzBISxf3YVBmKg1tPsxuxOqfdD+MEpZ/oYTDVPrwvzvaq0Xaa0/M/Tnw1rrj4z2dUqpAN4A9k2t9VNDD58dOqvG0O/nbiy6aCVKGdCxFpwsZLYBELXuBjR5e4+/4W5AYs1qnP40hT37/Y4ixLiVeWkj0cULsTpa6wYuVXeAsnucaOAulLLQThEGN0J4JkQ6/Y4nGqjWhfnTlVLfU0qdU0qdVUr9o1Jq+ihfo/Da9d/UWl++iP8HeH1jDP3+/RsJLlqPCs+EaDdktqDtLJaRIGzOpWC/iavLfse7LvH77kUFA3JJUgiflI+dpHzkOMk1q/2Oct28TUkWMWuh98DgRnDL0C6VFONNrZcjv4I3PN2Ot7j+h0OPXcv9wCeBdUqpnUO/Hgf+DHhUKdUDPDr0ZzFetK0BrSH9CgDxwGI0FQr2mz4Huz5mNEJ8xT1kXt6Edl2/4wgx7mRe9t4Atdp6MO8WRT1ErXkYKoKuXPAuRcYXoYKy9Ga8qfXC8ySt9eVD11eVUl+41hdorTcAI430j9R4XDHGqEAbOrnMOxuWWEIgdDtBYxr56m5i1l0ttRYi8dAqshteo7i/l+hCabUWopGyL20kcvcdBCZ2+B3luuSrewBNzFrkFVYPvARGENru9zua8EGtZ8IuKKU+oZQyh359AuirZzAxhqVWghmDfq+yIh5YgkuBolPTXo+mkVi9HCzLWxwshGiYyskzlHqPkFzTWmfBXF2hYO8jbM7xblFUPAylo5BajTKjfscTPqh1CPsNvHqKt4AzwEfxbmUkxHVTRhDaHoTKW5DfR9CYRsCYRK6609um3SLMRJzY0kVk1m9qyVswCdGqMkNvfFptV2TR3o+mMnQWzPHOglkdkFjidzThk1p3Rx7XWn9Aaz1Jaz1Za/0hvOJWIW5M7E4I3uatDdNVYtYSHJ2h5BzxO9l1Sa5ZRfXMWUo9rZVbiFaWWb+RyMJ5BKa0zhoqrR1y9hsEjakEzSmQfR3sAeh4GKVMv+MJn9R6Jmw4v3/LUohxRykF7WvByUHmNcLmbEyVGjob1jpnlRIPrATTIPuy7JIUohEqZ85SOnCIRIvtiiw6Pbg6TyywBO3kvZt0h+egInP9jiZ8dDNDmOyjFTdFhadB9A4Y3ApOlnhgCba+QMU95Xe0mlltSaKL7ySzfmNLDY9CtKrMUC1MK60H09olV92JpSYSMmZA+lXQNnQ87Hc04bObGcLkFUfcvPYHQSkYWE/E7MZQUXLVHX6nui7Jh1ZROX6K8tETfkcRYszLrt9IeH4nwalT/I5SM+9G3YPEA0ugeh5yuyFxDyowwe9owmfXHMKUUlmlVGaYX1m8zjAhboqykpBcAYWDUD5NzFpExT1NxWmdGykkH1oFhkHmxVf9jiLEmFY9e57ivoMtVdCqtSZX3YmpUoSM2dD/IhhhSLXOmTxRP9ccwrTWCa11cphfCa116xQ6ieaWXA5mAvpfJGLORxEkb+/0O1XNrAnt3iXJFzfIJUkh6uhSQWsLXYqsuCex9QXigSWo0iEon4C2+1Fm2O9oognczOVIIW4JZQSgfQ1Uz2HkDxKz7qTkHMF2035Hq1lq3QPeJclDR/2OIsSYlVm/iVDXbELTW+dCTK66A0PFCBtzoP8lCEyE+CK/Y4kmIUOYaA7R+RCaBukNRMx5gEmuusvvVDVLPLQKTIPBFzb4HUWIMal67jzF3W+21KXIivMWFfcMcWsRKrsTnMzQ/SHlpVd45JkgmsKlygq3gJnZSdSaT9E5iOPm/I5WE6st6RW3viCXJIWoh4trLlPrHvQ5Se1y1R0owoSZCYObIdKFiszyO5ZoIjKEiaahQrdB7C7IvE6UOQDk7NY5G5Za96BX3Lq/1+8oQow5g89vIDy/i+D0qX5HqUnV7aPsHicWuAtjcBNo11t2IcRlZAgTzaX9QVAmVnorEbObgv0mji74naomiQdXgmUx+KJckhTiVqqcPEPpQC+pRx7wO0rNvLNgAaLOJMjvheRSVKDd71iiycgQJpqKMmOQug+Kh4g5kwCXfIusDTMTceLLl5B58VW02zr3wBSi2V18Y5Nce7/PSWpju4OUnMNErTsw0q+CEfV+rgnxDjKEieaTvBesFFb6NcLmXAr2Plxd9DtVTZLrHsA+d4HivoN+RxFizMg8/wqRu+8gMLk17hWZq+4EDKLVKJRPQduDKCPkdyzRhGQIE01HKQvaH4ZqH/FKFI1Nvrrb71g1Sdy/AhUMkHn+Fb+jCDEmlA4fo3zkOKlHWmNBvuNmKToHiZjdmAObITgZ4nf6HUs0KRnCRHOKdEFoBlb6dULGLPL2Xlxd9jvVqMxYlPh995J5aSPacfyOI0TLy7y4AQyjZaopckNF0/GiBicL7eukkkKMSJ4ZoikppaBjHbhl4kUXTYW8vcfvWDVJrn0Au3+Awhv7/I4iREvTWpN5fgOxe+7C6mjzO86oHDdHwd5PxJiDmdkJ0fmo8HS/Y4kmJkOYaFoqOAniiwhk3iSkppKv7sbVFb9jjSqxahkqHCLzgtxLUoibUTp4iMqpMyRbpBvs4lmwWC7vPdD+kI9pRCuQIUw0t7b7QQWJ5wpoyhTs5j+7ZETCJFYvJ/PyJrQtlySFuFGZFzaAaZJ8qPl3Fjpu3jsLpqZj5XsguQxlpfyOJZqcDGGiqSkzCm2rCBROEmQC+eoutK76HWtUybUP4KQHye94w+8oQrQk7boMvrCB+Ip7MJMJv+OMyjsL5hIbPA9mHJIr/I4kWoAMYaL5Je4Bq4N4Jo1LiYL9pt+JRhVfuRQjHmXwuZf9jiJESyruPYB97gLJdc1f0OroAgX7TSJ6Elb53FAlRdDvWKIFyBAmmp5SJnQ8TLCcJugmyNm70Nr2O9Y1GaEgyTWrya7fhFtq/l2dQjSbwedfQQWDJO5v/jNKXqG0S2zwLQjeBrGFfkcSLUKGMNESVGQuhGcTy/bj6gIFe7/fkUaVetca3GKJ7MatfkcRoqVo2yGzfiPxVfdixqJ+x7kmRxfJ2/sIO0msah461nm7u4WogQxhonV0rCVYqRBwwuTsHU1/Niy65E6sSRMY/NlLfkcRoqXkt+/C6U+Telfz7y70zoI5xAffgthCVOh2vyOJFiJDmGgZKjABlVhC4tLZsObeKakMg9QjD5J7bQd2OuN3HCFaxuCz6zHiMeL3LfM7yjU5ukjB3kvYDmG5QFtrVGmI5iFDmGgtqdUEnSBB2yJX3Ynb5DslU489DI7jtX4LIUblFopkXtlMcu39GMGA33GuKV99A41NPNMHyZUoq/l3cYrmIkOYaCnKDEPbauLZDC7Fpj8bFu6cTWjuLNklKUSNMq9sRpfKpB5d43eUa/LOgu0hXDGxiEGyuc/aieYkQ5hoPfHFBFU7wQqtcTbs0TUU9+yncvotv6MI0fQGn11P4LbJRO++w+8o15Sv7kRrm3guA+1rUEZzn7UTzUmGMNFylDKgfS3xfB5NiUKT31My9S5vncjgs+t9TiJEc6v29ZPf/gapR9egjOZ9eXJ0nry9l3DZxbKmQnS+35FEi2reZ7kQ16AiswgG5hKqOENnw5r3npKByZOILrmTwedeRmvtdxwhmlbmuVfAdZv+UmSuugO0QzxfgPa1UkkhbpgMYaJ1ta8hnq+gqZC3d/ud5ppSjz5M5fgpSgcO+R1FiKY1+Ox6wvO7CM2a7neUEdlu1mvHL1WxIneiQrf5HUm0MBnCRMtSgXYC0XsIlavkqztxdfM20yfXrEIFLAafk0uSQgyndOQ4pZ7D3o7iJparvg7aJV50oV0qKcTNkSFMtLbUfcSLBhqbXLV5b5ZtJuLEVy1j8PlX0Lbjdxwhms7gs+vBNEg90rz3irTdQYrOAaLFCmZiJcqM+R1JtDgZwkRLU0aIQOJBQuUqheouXF3yO9KIUo+uwelPk3+9eYdFIfygXZfBZ9cTX34PVnub33FGlK1uA62JVUKQvNfvOGIMqNsQppT6e6XUOaXUnsse+w9KqVNKqZ1Dvx6v1/HFOBK/k3glgcYhV3nd7zQjit+3DCMRJ/3TF/2OIkRTKezai33uQlMvyK+6A5TsXmLFCmbbWpSy/I4kxoB6ngn7KvCeYR7/S631kqFfT9fx+GKcUMogkHqEcLlK3t6D4+b9jjQsIxgg9ciDZF/ejJNrzoxC+GHw2fUYkTCJB1b6HWVEucoWFJqYOwkiXX7HEWNE3YYwrfXLQH+9vr8Ql1Ph6cTdaYBLtrLZ7zgjanvPOnSlQuYFuY2REABuuUzmpY0k1qzCCIf8jjOsqnuBknuMaKGK0faI2wBC8QAAIABJREFUVFKIW8aPNWGfVUq9MXS5sn2kT1JKfVoptU0pte38+fONzCdalNW2jmjJoej0YruDfscZVnhBF6E5M0n/5AW/owjRFLIvb8bNF2h791q/o4woW96IcjUxoxsVnOR3HDGGNHoI+xugE1gCnAH+fKRP1Fo/obVeprVeNmmSPOnF6JSVImbeiUKTLTXnvRqVUqTes47i3gOUj5/yO44Qvks/84J3m6Ild/kdZVgV5y3K+gyxooPR9pDfccQY09AhTGt9VmvtaK1d4G+BFY08vhj7zORqoiUocZqK05xnUNseXQOmIWfDxLhXPXue/OtvkHrP2qa8TZHWmkx5PYbjEg0tQ5lRvyOJMaahz3ql1NTL/vhhoLlv+idajjKCxEKrUa4mW2rOIcea0E58xVIGf/oi2pHOMDF+pX/yAmhN23vW+R1lWCXnCFXSxEsWRmKZ33HEGFTPioongU3AfKXUSaXUbwL/WSm1Wyn1BrAW+L16HV+MX0bsbuLlEBWVpmwf9zvOsNreuw77gnezYiHGI+26pH/yAtF77iY4dYrfca6itUuu/Aqm7RKJPYxSpt+RxBhUt6ITrfUvDfPw39XreEJcpJQiGnuUfPWHZEsvEYx9sul2M8VXLcdMJkg/8wLxFff4HUeIhiu8sY/q6bNM+rWP+x1lWIXqXmxVoq2aRCWkkkLUR/NdhBfiFjDC04nbE6gaRUqVfX7HuYoRDJB85EGyGzbjZHN+xxGi4dLPPI8RjZBcs9rvKFfR2iZX2UKg6hBKvLvp3sSJsUOGMDFmReLvxrRdcpXNeHtBmkvb44+gK1UGpTNMjDNOoUjmpY0k1z3QlN1g+fJruIZDXM/ECE70O44Yw2QIE2OWEUiRYA62aVMsNV+Ba7h7LqG5sxiUXZJinMm8+Cq6VKbtvY/4HeUqjlsiZ+8hWHEJJZovnxhbZAgTY1ooto6ADVlnN65b8TvOFZRStL1nHcV9BykfPeF3HCEaJv3M8wRnTiNy53y/o1wlX3oJbWgS5t0oM+J3HDHGyRAmxjTDDJIwl+AakC8863ecq6QeWwOmSfqZ5/2OIkRDlE+eprj7Tdre23y3/7HdQfL6GOGKQSDefGvVxNgjQ5gY84LRFYSqFnlOYDsDfse5gtXeRmL1ctI/eRFdrfodR4i6Sz/9PBgGqcce9jvKVXKFnwGaePABlJKXR1F/8iwTY55SikT4YbSCfP6nfse5Svv7H8NJD5Ld8JrfUYSoK23bDD7zAvGVSwlM7PA7zhUq1ZMUVR/RapRA9A6/44hxQoYwMS4EQp1EnSQFM021csTvOFeILVtMYMokBn70M7+jCFFX2U3bsPsHaH//Y35HuYLWmmzpeZSGePTdfscR44gMYWLciEffjdKQLb3kd5QrKNOk7fF3kd+2i8rpt/yOI0TdpH/4M6xJE4ivvNfvKFcol3dTMUvE3SmYweZr7xdjlwxhYtwwrQnE9DTKVoVyYbvfca7Q9vgjYBikf/yc31GEqIvKW+fIvbaDtsffhbKa5xZAruuQrW7BdDTRmJwFE40lQ5gYV2KxxzBcyNjbcV3b7ziXBCZPJL5yKelnnkfbzZNLiFvl4huM9p97l89JrlQsrsc2XRIswDCjfscR44wMYWJcMYwQCeNObEtTyjdXSWr7+x/D7hsgu2mb31GEuKW07ZB++jlvQf6USX7HucRx8uR0DwHbIBR70O84YhySIUyMO+HwaizHJMthXDvjd5xL4ivvxZrYQfpHzddnJsTNyG3Zjn2hn7b3Pep3lCvkCz/FNSAZuA/DaJ5LpGL8kCFMjDuGYZAM3o9rqqaqrFCWSdvjj5Db8jrVs+f9jiPELTPww59hTWgnsWqZ31EusatnyBvnCFcjBCN3+x1HjFMyhIlxKRS6g5ATI2/1YZeP+R3nkrbHvfUyA0/LAn0xNlTPnie35fWhBfmW33EuyRa9M86JaHOtURPjiwxhYtxKRN6NBrKlF9Ba+x0HgODUKcSWLyH94+fQjuN3HCFu2sDTz4HWtDXRgvxycTclq0jMnYwVuN3vOGIckyFMjFsBaxIxfTulQIVKsXkqK9rf/xj2+T5ym5snkxA3QtsO6R8/R2z5EoJTm6N/y3UdMtVNGC7Eou/xO44Y52QIE+NaLHp5ZUVz3LsxsXoF1qQJ9H/vab+jCHFTclu2Y5/va6qG/GLhBWxLk1ALMKWSQvhMhjAxrplGmIRxN7YFxVxzrMNSlkn7+x8jv3Un5ZOn/Y4jxA3rf+rHWJMmkFi9wu8oADhOhhyHCNgm4YhUUgj/yRAmxr1IZBUBxyJnHMOxB/yOA0D7+x4D02Tgn37idxQhbkj5xCny23bR/oF3N01Dfi7/DK6CZOhBDENe/oT/5Fkoxj2lFMngGlxDkc83x9BjTWgnuWYV6Weexy2V/Y4jxHUb+KdnwLK8NxRNoFo5QsEcIOIkCYbm+x1HCECGMCEACIa6iDhJ8tYg1dIhv+MA0P6h9+Lm8gw+/7LfUYS4Lm6hSPqZF0iuWYXV0eZ3HFzXJVN6EaUhIYvxRRORIUyIIfHoe1BAtvxSU1RWRBctJDRnJgPfe6Yp8ghRq8HnXsbNF+j48ON+RwGgXNpCxaoS17MwrQ6/4whxiQxhQgyxzHbiehblgE2p8KrfcVBK0f7hxyn1HKa476DfcYSoidaa/u89TbhrDpG7FvgdB9cpknXewHIgGmuerjIhQIYwIa4QjT6K5Sgy7l5cp+h3HNoeXYMRjTAgdRWiRRTe2Ef58DHaP/w4Sim/45DP/wTHhIS5AsMI+B1HiCvIECbEZQzDImmtxDUhV3jG7zgY0Qipd68l89Kr2ANpv+MIMaqB7z2NEY+RetdDfkehWjlBzjxL2I4Qjt7jdxwhriJDmBDvEIosJlyNkDfOUa0c9zsOHR96L7pqk/5xc/SYCTGSal8/mZc30/b4IxjhkK9ZXNclW3rWW4wfkcX4ojnJECbEMBLR96I0ZErP4bqur1lCs2cQu3cR/f/0DNq2fc0ixLWkf/gzcBw6Pvhev6NQLm6ibFWJ65lYgcl+xxFiWDKECTEMKzCJuJ5FxapSLvq/SL/jo+/HPt9H5uXNfkcRYlhupUr/939CbMVSgtOn+prFcfJk3N1YjiIaa46eMiGGI0OYECOIxoYW6eu9OE7O1yzx++4lOP12+r/7A19zCDGSzAuv4PSnmfCx9/sdhVz+x7imIhlYjWFYfscRYkQyhAkxAsOwSAbuxzUUufyPfc2iDIOOj76P4r6DFPYe8DWLEO+ktabvuz8gNGcmsWVLfM1SKfdSMPuJ2HFC4bt8zSLEaGQIE+IaQuE7idgJCuYAlZK/XV1t716LEY/J2TDRdAo79lDuPUrHR9/vay2F67pkyi8NNeM3R1GsENciQ5gQo0jEHvcW6VfW47r+LYw3ohHa3/comZc3UT173rccQrxT33e+j9mWIvWov7UUxcKLVC2HBF2YVruvWYSohQxhQozCNNtIqgVULZdCwd+aiI6f/zkA+p/y9/KoEBeVT5wit2kb7R98D0bIv1oKx+4jSw8B2yQSXedbDiGuhwxhQtQgHHmIoG2R4yi2fc63HIEpk0g+tIqBHz2LW/C/0V+I/n/4ESpg0fEhf2spMvkfoxUkw+swDHlpE62hbs9UpdTfK6XOKaX2XPZYh1LqWaVUz9Dvcr5YtATDMEiGH0MryBSe9vWG2h0ffT9uLk/6py/6lkEIACeTJf2TF0g+8hBWR5tvOUqF1ygFisTcyQSDc33LIcT1qufbha8C76wp/gPgea11N/D80J+FaAmB4AwS7jTKVplScaNvOaJ3LSCycB79//AjtM9FsmJ8G/jRs+hSmQm/4F8thePkGXR2YDoQj/2cbzmEuBF1G8K01i8D/e94+IPA14b+99eAD9Xr+NdDZ/vQx3bLC5oYVTT2HixbkXF349gZ33J0/MIHqJw8TW7TNt8yiPFN2zb9T/2Y6NK7CXfN8S1HLv8jXBNS1moMw99bJYnmpwfPoe2K3zEuafSF8yla6zMAQ7+PeC8JpdSnlVLblFLbzp+v704wvXc97j/+J9wnfgf3ha+hTx/09XKTaF6GESAVXIOrIFv4oW85kg+tIjB1Che+9ZRvGcT4lnnxVezzfUz4hQ/4lqFc2kfBHCBqJwlF7vYth2huOp/Gff0nOE/+e9y/+wIc3uF3pEuatkpYa/0E8ATAsmXL6joRqXvfh+qYjntgI3r3C+idP4XkJNT8VagFq1GTZtbz8KLFBMPziWbeoGD1EynsJBRtfDmlskwm/OIHeeuvnqDwxj6iixY2PIMYv7TWXPjWU4RmzyB+372+ZHDdCpnqBgwgHnufLxlE89KlHLpnK/rARjixD7SGiTNRD3wcpnb5He+SRg9hZ5VSU7XWZ5RSUwH/tpldRgWCMG8F5rwV6HIBfWgbev8m9LYfobf+ACZM94ax+atQbVP8jiuaQDz2c5QLX2eQLUx05mOYkYZnaHvvI5z/yre58K2nmClDmGig3JbtlA8f4/Yvfh7l007EfP4ZbFPTxhJMM+FLBtFcdLWEPvQ6+sAmOLITXAdSU1ArPui9hk+Y7nfEqzR6CPsB8KvAnw39/v0GH39UKhRFLXwIFj6ELmTQPVu8gezV76Bf/Q7c1un9Y867DxWXzZ3jlWlGSVorGNCvkc3/kFTyYw3PYIRDdHzk5zj/909SOnyM8NxZDc8gxqe+bz6FNXkiqXc96Mvxq5Uj5IwzhO0IkeR9vmQQzUE7Nhzd5b1OH94O1TLE2lFLHkMtWA1T5vp6F4fR1G0IU0o9CTwMTFRKnQT+GG/4+o5S6jeB48Av1Ov4t4KKJlGLH4XFj6IzF9AHNnm/Xvo6+qVvwIw7UPNXo7pXoCJxv+OKBgtH7iGSeZOC2U+4tJdQ+M6GZ+j48ONcePJ79D35Pab94Rcafnwx/hR2v0nhjX1M+d3fQlmNX9HiujaDpedQBiSichlyPNKuCyffRO/fiO55Dcp5CMdRC+73Bq9pC3w7Q3u9VCssQF+2bJnetq1+u8BKdpGyUyYVqq3nRvef9v7xD2yCgTNgmDB7kTeQdd6LCobrllU0F8fJcqHwTRQGE2OfwjAa/2//1v/4O/qfepruJ79EYMqkhh9fjC/Hv/gfKe7dT/f//luMSOOf77nsD8map0npBURjaxp+fOEPrTW8dejSyRDyaQiEvNfcBffDrLtR5uhvCqpuBVNZGKq+Q5pSarvWetlon9e0C/Mb6UB6P1vObWRieBJdqW7mJruJB0Y+s6U6bket/ih61Ufg3NFLA5k+vANthVCd96Dmr4bZi1FWoIF/E9FoppkgZd7LAK+Tzf2IVPKjDc8w4WMfoP+pp+n7zve57Xd/q+HHF+NH6fAxchu3MunXP+7LAFYtHyZrnCJkhwnH/bkUKhpLXziJPrARvX8TDJ4F0/JeWxesRs1digqMXkviuA4n8sfoHezhWPYoj05/NzMTs+sfvgYyhAFdqW6Ugt7BHjaf3cjmsxuZGr2dzmQ3c5OdhK3hF10rpWDKHNSUOeiHfglOHfSeLAe3oA9shlDUu1S5YDVMX9gyp0fF9QlHlxPJHKRgXiBc2kMofFdDjx+YPInUux5i4EfPMvFTH8NKJRt6fDF+9H37n1DhEO0ffrzhx3bdKuny8ygDktH3ya2JxjA9eM47sbF/I1w4AUrBjDtRKz+I6lqOCsdG/R6udjmdP8WhTA9HMoepuGVCZph5bfOJB5pnI4dcjnyHwXKaQ5keegd7SFcGUCimx2bQmepmdmIuQTM46vfQjg3H93oDWe82qBQh1oaat9I7Qza1q6kXCorr512W/BYKmBj9VMN3S5aOHOfwr32OSb/+cSb92scbemwxPlTeOkfvL3+Gjp9/nNs++5sNP342+31y5lu06YVEYnIWbKzR+TT6wGavUuJMr/fg1O6hjXArUbHRlwtprTlXPEtv5iCHB3spOkUCRoDZibl0JruZHp+Oocw6/008tV6OlCFsBFpr+st99A72cCjTQ66axVQmM+Oz6Ux1MzM+C8sY/USirlbgyE7c/a96W2adKqSGOsjmSwfZWFIqvM4AW4nabaSSv9jw4x//gz+luPcAXf/7Ccxo4yszxNj21n///+n/p2fo/vaXCExu7NrDSrmHPvt5wk6U9uSnGnpsUT+6lEf3bvXOeJ3Y+3aX18VKqNToz7OLr9WHhl6rs0Ov1TPis+hKdTMzPrum1+pbTYawW0hrzdniWxwa7OFw5srpuivVzbRYbdO1LhfQvdu8J9zxPaBd6SAbY9KZJymag3QYqwhFFjf02MU3D3Lkn/8bJn/6k0z8lY809NhibLP70/R8/NMk1z7AtC9+rqHHdt0Kffmv4iqXieFfxLSkGqiV6WoZffh173Xw6C5wbEhN9l4Hr6PLK1MZHDpJcpCBsnfValpsBl2pbmYn5hA0/b2FlQxhdXLxOnNv5iBHM4epuBXCZpi5yS46k93cFp1a06VGXcgMrR3bCKcOeA9KB1nLc5wCfYWvAzAh+glMc/S1C7fSsX/9J5QO9NL97S9jyNkwcYuc/Zuv0vedH9D59f9BaPrtDT12JvsUefM8bdxNJLq6occWt4Z2bDj2hreJ7dDFLq+2oStCq7zXvhpeN/PVPIczvfQOHuR8yet6vy0ylc6Ut347YkXr/VepmQxhDeC4Didyx+jNeDsuHG0Ts+J0JrvoTHUzMTyptoHssg4yzh0FFMxY6A1k3ctRYekgayXl4m763VeJOAnakr/S0GMX9uzn6O/8AZM/82tM/PiHGnpsMTbZA2l6Pv7PSD54H9P+6PcaeuxKaR99zsuEnRjtyU829Nji5lzq8jqwEd2zFUo5CMVQ81Z4a6On31HTZrWSU+JI5hCHBns4XTgFwITwRDqT3XSluptqkf3lZAhrsKpb4Vj2KL2DPZzIHUfjkgq20Znsois1j7ZQbWe2dP8pr/n3ig6yoe24nUtRAekgawWZzD+Qt/p8efd+7F/+MaVDR+n+9hMYYX9PyYvWd/ZLX6Pvf3+fzq/9f4RmTmvYcR0nT1/hG2hgYvSXME3Z9dvsrt3ltRpmLaq5y+vi6+nJ3HFcXFLB1NDgVfvrqZ9kCPPRrZjctdZXdJCR6wcr5A1iF5/M0kHWtFy3Ql/uqziGy8TwR7Csxi1kLryxj6O/+2+Z8ju/wYSPfaBhxxVjj53O0PPxT5O4fwXT/93vN/TY6cw3KZpZX9ZXiuuj+056r1XDdnndU9PJg8u7vI5nj2Jrm5gVozPZfV1XlpqFDGFNYrhr2FMiU4dKYWu7hq21C6cOeE/yg1uGTutKB1mzq5aPcMH+KUEnSHv81xraa3T0C/+OyrGTdH37SxghORsmbszZJ75O37eeovOr/53Q7BkNO26x8Cpp9hCzJ5D0oQBZjE4Pnr+sy+v4211eC1ajupbVtIxmpC6vuclOupLzal5j3YxkCGtCb+/m6GGg3D+0m2M6nalu5iTm1rSbw+sg2+MNZL3boFqSDrImls/9lIxxlIQzg3iicQWX+Z17OPb5P2LK7/4WEz4q99cT188ezND7i58mvmoZ0//4XzXuuNVzXCg/hemaTIj/KoYxejejaAydH0Qf3OwNXmd6vAendnl1S/Pva7kur3qSIazJ9Zf66M30cGiwh2w1g6EMZsZn0ZnsZlZiNpYx+qVGr4NsB+7+je/oIBva6juxce9cxfBc1yWd+xpls8wE61GCoc6GHfvo5/6QyqkzdH3rSxgheSET1+fc336DC9/8R+Z+5b8RntOYPkPXdRnIfZWqWWFC4L0EgrMaclwxsuG7vGZc1uU1uabv01/qo3fwYFN1edWTDGEtQmvN+eJZbyDL9FK0CwSMALMSc+hKdjM9PuMmOshmoBaskg4yn9l2H32l72JogwnRTzasTT+3fRfHf/+Pue1zv0XHR+RsmKidnc7Q+0v/jPiKe5j+f/+bhh03l/0xWfMkSXcOsfhjDTuuuNI1u7zmr0ZNvN4urxu/+tOqZAhrQa52OVM4zaHBHo5kDlF2y4TMEHMSnXSlvOvjtdz5XRcG0Qdfe0cHWZc3kEkHmS+Kha2keZ2onSSV/KWGHFNrzbEv/DvKx0/S/a0v+XLDZdGa3vqfX6H/uz+k8yv/rWFrwSql/fQ5LxFywrTFPyX3hmwwr8tr91CX17Yb7vIqVPMcusl10GOBDGEtztEOJ3PHh+76fgRb20StGHOTXXSlupkUnnx9HWT7N8L5Y97iyenSQeaHwcx3KFgDDa2tuNQb9tufYOInZIGzGF313AV6f+UzJNc9wLQvfr4hx3ScLH2Fb6EVTAx/TFrxG0S7Lpza7w1ePa/VpcurM9lFIjj+6kVkCBtDqm6V49mj9GZ6OJE7hqtdkoEknaluOpPddIQn1PR9LnWQ7d8I6bekg6zBXLdMf+5r2IbLhND7CQQa07l0/A/+lMLuN+n+9pcxEzJ0i2s78+d/w8DTz9P1jb8mOLX+yxhc12Uw9w1KZoEOYzWhyKK6H3M801rD2cND9UebIT8wVH90L2rBKu81YQx3eQ0UKkQCJuFAfRf/yxA2RpWdEkcyhzmU6eF0/hQaTUdowqWBLFnDOw6vg+zI26Ww7+wgq/E/QnH9qpUT9FV+jOWadDRo51ep9wiHf/P3mPArH2HKp6V1XIyscvIMvZ/6LO0feDdTv/Dphhwzn3uWjHGYuHMbicQHG3LM8ehSl9eBTZA+670Jn7PEu9xY45vwVuzyypdtXj+ZZuvRAV47NkDP+Rz/9cN3s3ZefbsbZQgbBwp2nsNDp4DPFt8CYHJkCl3Jbuamuohao9+3cPgOsthlHWS1nY4WtSvmXyGt9hG120klP9aQY578kz8n++prdH/rS1gTmvMdqvDfyf/nL8i+spnuJ7/ckOdJpdxDn/28L11648HwXV4LvcX1NS5HcbXLmfwpeluky6tiu7xxepDXjg6w7fgAe85kcFxN0DRYPD3F8pntPHbHZGa013dtmgxh40y2kuFQpofewR76y30oFFOjt9OVmsec5FxC5ujvckbuILvPG8hqXJgpRpfOPEnRytDGYiLR++p+vPLJ0xz61Gfp+OB7ue3zv13344nWUzp01Dtj+ss/35AzppduS6Q0E8K/gGXVtqxCXNulLq8Dm+D0Qe/BG+zyOjTsrv15TdXl5bia/WezbD02wGvH+tl5cpCy7WIouOO2JCtmtbNiVjuLpqXqfgnycjKEjWMD5X5vW/DgQTLVDAYG0+Mz6Up1Mysxh0DNHWSv4+7fdFkH2WTv1LV0kN001y3Rl/9fOMplYvD9WMH6rw87/V/+mvRPXmzYWh/RWo7/2/+Xwq49dD/5ZcxkfW+K7K0D+yYlM0+HWkkoek9djzfWXeryOrBpqKLoZru8eslWM+/o8ppVU39lvWmtOdpX4LWhoWv78TTZsg1A58QYy4eGrqUz20mE/FtWI0OYQGvNhdJ5egcPcjjTS97OYymLWYk5dKa6mRGbiWnU2kE2VNZ3fO+VHWQLVtf8H7i40sX1YV4z+KcwjPp25ni73v4FyTWrmPZHv1fXY4nWkt+1l2Of+0Mm/davMOmTv1D/4+V+RsY4QtyeQiL5obofbyzyurx2DHV57Xy7y+s63yi3QpfXmUyJrUf7ee3YAFuPD3AhVwHg9lT40tC1bGY7E+P+Z71IhjBxBa2110GW6eFw5hBlp0TQCDEnOZeuZDdTY9Ouo4Nsi/cf/sVT3dJBdsOK+VdJqz1E7CRtDegPO/vE1+n75j8y58v/lciCrrofTzQ/7boc+cz/hd3XT9c3/idGuL4vZOXSXvqdV4bWgf0qRg1vBIXnyi6v7Te8ZKTZu7wGChW2Hhvwfh0f4MRAEYCOaIDlQwPXitkdTG9rTPH1jZAhTIzI1Q4ncyfozXgdZFW3SsSK0pnsojPZzeTIlBo7yM6jD2y+soPsOhd9CshkvkPeGiDpdhOLr6vrsZx8gd5f/gyhWdOZ9d/+VNb4CQafXc+pP/1Lbv/i52h7T32ff7bdR1/xu4BiYuQXMa3R1yeNd1q7cHKYLq/r3Dx1cWd97+DBpuvyunwH49bjAxw8lwMgFjRZOqONFbM6WD67na6JsZb5mSVDmKiJ7VY5nvO2HJ/IHcPRDolA4tKW447QhNoGsr5Tb+/CudhBdp3bn8cr17UZyH2NilllgrmWYHh+XY/X/0/P8NZffpnpf/oHJB+s/6YA0bzccoVDn/wdzEScOX/753XdCX3F89xaRzA0r27HanVel9cR9IGN6P2bbqLLq8qx7JFhu7w6U920hzoa8Le52sUdjBfPdl2+g3HRtCQrZnWwYlY7d0xNYLXojlkZwsR1qzhljg79B3sqfwKNpj3UTmdyHl2pbpLB1Kjf4+0OsqEiwFw/BEKoudf3w2O8cex+LhS/iwImROrbGK5th0O//nlwXTq/9t9Rlvx7jFcXvvUU5778v5j1l39CbGl9S1IHM9+lYPWTcruJ1vmMb6vSfaeGfnZuvMkur+McuuxuK7FLd1uZ50uXl+NqDpzNXlpM3yw7GOtJhjBxU4p24VIH2VvFMwBMCk++VAobC9TYQXbygPduTjrIRlUuvUm/s56gExhaK1O/4Si7cSsnvvgf5ebe45idHqT3lz9DdNFCZv7ZH9X1WIX8KwyqfQ29d2qr0Jnzbxdnnz8GDC3ruI5by12ry6sz2c3U6O0NHbxq2cG4fFY7985oIxH2f8dlPcgQJm6ZXDXLocEeejM99JUuADA1Oo2uVDdzEp2ErRo7yI7t9i5ZSgfZiC62h8fsDpLJ+u1S01pz7Pf/PeVDR+n65t/I7YzGoTN/9QQDP/gJnX9f35t0V8q99NvPYTkmHQ3YBdwKhu3yus4NTtfu8upmenxGQ7u8Lu5g3Hrca6Z/5w7G5bPaWd5kOxjrSYYwURfp8sCl7cyDlTQKg+nxGXQlvQ6yoDn6bXh0tQxHdgxHvDByAAAgAElEQVR1kO14e2v1gtXeov6J0xvwN2leF4tcU3o+0djDdTtOqecwh3/7X9Lx0fdz22d/o27HEc2nfPQEh37j87S/7zGm/v4/r9txHLuPvuI/eIWsoZ/HCozfOhtdLqB7Xruyy+ti1c/8Vai22rr7+kt99GZ6ODTYQ7aawVAGM+OzG97lNVCosO14mq3HvOqIizsY26MBls/0hq5m38FYTzKEibrSWtNXukBv5iCHBnvJ2zlMZTErMYvO5DxmxGdi1XA57coOshsvGRxLXLc6tIDZpsN8kFD4zrod6/R/+WvSzzzP3L/7K8JzZtbtOKJ5XDwLWuo5Qtc3/idWW312xbluhf7c/6Jq2nSYDxEKL6zLcZrZpdLrNy/v8prkvdm8zi6vi1cj/OryKlRsXj+R9rq6jo28g7FzYgxDrmrIECYaR2vN2eIZege9DrKSUyRgBJmTmEtXqpvbY9Nr6yC7BbfbGCsce4C+4neGziB8ECswtS7HsdMZej/xLwh3z2HWX/yJXBIeBzIvvsrJ//BfuO0Ln6bjw4/X5Riu65LJPUnRypHSC4jG1tTlOM3oVi29uNjldSjTw7niWQCmRG6jKzWvIV1eFdtl9+nBS0PXxR2MAVOxeFrKG7pmtbOwhXcw1pMMYcIXrnY5lT/JocEejmQPU3UrRMwIc5JddKW6mRK5rfYOsssXq47DDrJq+TB91Z9hugYdsV/BNEffDHEj+r/3NG/91RNM/w//muTa++tyDNEc3GKJ3k/+DlYqyZwn/ivKrM+aoVz2x2TNk8SciSQTH6nLMZrJ8JuQoqjulTfc5XWmcBqNZkJoAp2peXXv8rp8B+PWYwPsOJm+YgfjxWb6xWNoB2M9yRAmfGe7NieGOsiO547iaId4ID5UDtjNhPDE2jvILt+2bVpe1cU46CArFraQ1jsI22FSiU9h1OEdp3Ycjnz6X2EPZuj6+l9jRMbu/5/j3bm//QYXvvEPzP4f/4no3XfU5RjFwmuk9euEnDBt8fo8Z5vBFV1eF+t4rJD3M2nBapi1CGWNvj5ruC6vZDBFV527vC7uYLy4kH778QEyJW8H49wJMZbP9oausbyDsZ5kCBNNpeJUvB80mR5O5k6gcWkLttOZ6qIzOY+20OiXGof9oRe4WGA49ENvDHaQXTqrYE8gmfxoXY5R2P0mRz/7RSZ+4qNM/u1P1OUYwl/lk6c5/GufI7n2Aab94RfqcoxKuZf+6nN1P3vrp7ffFG56u5h69mJvjVetXV7a4USu8V1eb2VKQ2e6+tl6bIDzQzsYpybDrJjVzvLZ42sHYz3JECaaVskucjjrdZCdKZwGYGJ40lCLcxfxQGLU7zHs6f9w3LtUOX9sdZB562v+T3vnHR/XVeb975mqqWq2ZcvqxXacQqqTOIENLUBgyYZl2fCynxdeWHgpS1l6CR2WJJB3aaEENoQaQgvLsoQQQsmCk9hO4iROLKs3y7KsNl3T7nn/uFfSWJGssTTqz/fz0UdTztw5Z+69c3/znPP8nh+TcEQIGg34/C9ckvc59tkvEv7jX2i448u4qyqX5D2ElUFrTd8HPk38ySM0/uBWnOWFj65k0icYmbgbFJS7r8PhzC/bby2gw8PTFUFmenk1XYLy5OnlFR+gPdS6bF5e+WQwXlJbSlWJR9aDFhgRYcKaIJaOmotPQ21ThWS3erfRFNxBfbARj2P+9OZTi9oehHTSXAi700z9Xg8eZIaRZjz6fZL2FCXqQjzePQV/j/TIKB3/9DY8u3dQ84VPrPnPTJgm/MCD9H/0Jire+n8o/8drC779bDbCaPxOssqgzLk+ShLpeAjd+rApvBbh5XUycYL2cBud4XbiS+zllZvBeLBnjKMzMhjNdV1lNG6WDMalZlWLMKVUNxABskBmvo6KCNsYhJLjdITbaA+1MZ4aQ6Go8lXTWNxMXaAhbw8y3fmY+cU5lRJeYXnxrG0Psmw2ymjsR2TtBmX2v8FVVPg1PZOL9Cs//E5KXvTcgm9fWH6ykSgdr307jtIS6r/5BZSjsIuqDSPFWPT7pOxpStXFFHnnve6sWk61zHkKtFFAL69aGoPN1AbqCubllcoYHD4eYn+3ua4rN4PxvO3FVjmgMs7aGsBpXx8zA2uFtSDCLtZaD+fTXkTYxkJrzWhyZMoXJ5qOYFd2qv21liFhXX4eZBMx8ws11xxxUzVq1xWWB9nmZRhNYcmkTzIy8QtQmjLXy3C6CisqtWHQ/S8fItU/QOP3bl0yDylh+Th+y9cZ+/V91H/jZjw7mwq6bcMwCEV/yIQjTtBowud/fkG3vxxMeXm1PAhdhyCbtry8rB9um/Pzz5vNy6vSV0WT9SPSXQAvr6yhaR2yajB2z8xgDHCJVfhaMhhXHhFhwrpgsjRHe7iVzlA7iWwCp81JXaCBxmAzVf6qvML5s3uQNZtrOnZchvLNX5x8tZBOdTOS+i02rSj3/AN2R2HX90x09dL5z++m+HlLt4BbWB5ijz9Fzzs+QtmrXs7WtxW+KkI48nNi9mH8mQoCwb8r+PaXirm9vC4115Rua1qUl1djcTMNwSa8i/Ty0lrTPRrnQI9kMK41VrsI6wLGAA18U2t92+naiwgTwFzYOhA7Rke4ja5wBykjRZG9iPpgI03BHWz1bsvP8iJ0cnqR7XCv5UF29vQi26LVn9GVnHiS0exfcWbtlPr+V8Gz0Ib+44cMf++n1Hzh4/gvuaCg2xaWByOVpvMN/4pOJWm84ysFtx6JRe4hbO/Fk/YTDLx61VtRaG3AsaPm2tFTvLz2WF5eu1eFl9dkBuNBq/j1ZAbj1qB7yiD1ktpSNksG46pmtYuwSq31gFJqC3Af8Hat9QMz2rwJeBNATU3NRT09PcveT2H1kjWy9MVMD7KeSDdZncHn8NMYbKKxuDnvFG890m9+Kbc8CKEcD7Jde1ENF6Kcq/eLLhF/kHH9OK6sk1L/a7DZCneRNZIpOv/5X9HpDI13fBlb0er9HITZGfrOnQzfcRc1N38M/6UXFnTb8egfCamjlhfYP2HLY3nASqC1hqGuaePnVejlNRZP8Ujv+JR1RK+VwVjicU4ZpEoG49pjVYuwUzqg1CeAqNb6C3O1kUiYcDrSRoqeSPcpX5DFrmLL8iK/L0jTg6zT8v95CGJja8KDLB69n5CtHXfGXfCLYezQYXreecOSTWUJS8dEZw+db3wPwav2UvXRdxd020sp/guFHj1mCq+WfYvy8uqP9lo/9Arn5RVPZXisL8R+y6urdSiKBrxTNRglg3E9sGpFmFLKB9i01hHr9n3Ap7TWv53rNSLChHyZyE7QbU0VDMSPAZzxVIE2DDjWYgqytv05HmTWtMX2XavKgywa+Q0Rex9FGS/F/tcUdFro+C3fYOy/7qX2S5/B96ylKyQuFA6dTtP1lg+QPjlC43e/jKOkcOsdJ+KPMqb3L9k0+GKY3cvrLKvU2Z4z8vLqCJlLHpJGErfdTUOwacFeXumsVYNRMhg3FKtZhDUAd1t3HcCPtNafPd1rRIQJC6EQi2Zn9yArNQuK79oLFQ2rYoogEv4lUccJvJkgAf8/FkyIGfEEHW94F2houP2L2L3z+7YJK8vQ7Xcy/N27qPrMBwk++7KCbTc58RRj2f8x3fA9r8LumL/KxVKj42HLy+uvOV5ejdMJNwv08nIoB3XBhgV5eeVmME7WYJxIn5rBeElNKc+qKsYjGYzrllUrwhaCiDBhsRQifdz0IHvU8iB73PQgK6kwU9l37UWVr5wHmWEYRKI/I+4Yw5cpw+//+4IJsfgTT9P9jo9Q8rIXUvnetxZkm8LSkGhpp+ut76f4+c8paGZrKnmU0fQfsWlFWdErcDhXzt7F9PI6aHl5Hba8vKrMc3AFvLxyMxgP9IxxcGYGo7Wm6+IayWDcSIgIE4Q5KMSX75QHWcs+6HvK8iCrmb4QrIAHmVne6C4SjjC+7CYC/lcULEp34ut3MPLjX1J90w0ELlu7ZpzrGSOZpPON78GIJ2j8zpewB+affsuHVLKN0fT9KK0oL/pbHM7lL2llenk9htGyb9rLK7h52oQ5by+vMB2h1kV7eZ2YqsFo/g1Fk4BkMArTiAgThHnQWnNyYoj2UBud4bbpaYhAPY3FO6jyV2PPy4NsfLq8yfE288EV8iAzDINw5E4Szii+7Cb8vusKEhEzkim6/u97yYYjNN7xZezB+et7CsvL4K23M/qTXxXUViSVbGU0/QcUijLXNThd1QXZbj7obAZ6D1tLAR6BVAK8xeZSgGX28hpPpC3LCDPS1TMaBySDUZgbEWGCcAYY2mAwPkD7jAW59YFGmoqb2eqtxKbmFzOrwYPMMLKEIz82hVhmE35/YYRYorWTrje/j8CVl1L1yffJxWYVEX34UXrf/ylKr30x29795oJsc0qAaUWZ+6UFr84wG6d4ebXth0TE9PJq2oM668y9vDrCbQzEjp2xl9dkBuOBXtOrq/XEMzMYL6ktpWmzXzIYhVkRESYIC8RMTe+jI9RKt5Wa7nV4aQg201TczOaiLYvwIDvf8iC7YEk9yMypyTtJOKL4MuX4/a8oiBAb/uHPGbrt+2x7z1soffmLCtBTYbFkRsboeMO7cJQUU//Nz2NzL/64Wk4BZnp5dVv2MJNeXi7TSmLnXtNaIm8vr246Qq30naGXVzprcHggzP6eUfb3jPHkwKkZjJfUmBmMu7dJBqOQHyLCBKEApI00vZFu2sNt9EV7MLRB0BmksbiZxmAzZUXl825Daw2DHWaE7OiDEBsHZ1GOB9m5S+JBZgqxH5NwRPBmSgn4X7loIaYNg973fZL4E0eo/+bnKWqoLVBvhYVwyv647QsU1ee3Nup0pCaeZjTzwJILMD06MC28xo5bXl7nmWu8Gi9CuRbm5eV1+KZMm+f6wWRozdETUQ5Yomsyg1ExmcFoii7JYBQWiogwQSgwyWySrnAHHeF2BmL9aDRl7vIpQRbM14Os/wj66D50635Ixk71IKvahcpj2jNfzKzJnxB3hPBkAgT9r1q0oWtmdNyMvAQD1H/zC+Kmv4IM/+gXDH3zewWLTE7EH2Xc2I9NK0qLXobTub0AvZxGR0amhddQN4X08jKXDpjly2YuHdBa0zMan1pM/0jvGCErg7G+3Du1mP6imhKCksEoFAARYYKwhMQzcTrD7XSE2jiRGARgi6fCdOkPNuF1zr/2y/Qge2J64fEpHmRXQEV9QdZdGYZBNPoLYo4RijJFFPtfjc3mWtQ2owcO0fu+T1JyzQuofP/bFt1H4cyJP3WU7rd/mMCVe6j65PsXfaxMOuE7DBulnutwOAqT4Tvl5XV0Hxw7aj5YYC+v7bMk0UxlMPaOcaB7jgzGmlI2B+RHhFB4RIQJwjIRSYXN7KtQKyPJERSKbd5Kmop3UB9swG2ff1pFpyfQnY/N4kG21/IgW3xEIhr5LyL2AVwZJ6W+67HZ588KOx0nbvs+Iz/8OZUfeiclL37uovsn5E9mdJzON74b5XTS8K1bFm1HEY/9iRAtphO+9x8WbcQ6u5fXdtSuK87Yy6sj3EZ7HnYy44k0j/SOTUW7cjMYL64pZU+dmcUoGYzCciAiTBBWgLHk6JQpbDgVwoaNKn8NTcXmRcOZRwRKT0SnL2CTHmSbay1T2MtRwYVHKGLR3xNW7QW52OpMlp73foLEU0epu/VzeHY0LnhbQv7oTJae93yMxNNt1H/tRoqaGxa+La2JRX9DxN6PK+OgxHf9gksRmV5ehzCO7oPOx6a9vCwzYzZV5yV+wqkwHZaP36j1o2Y2L69EKstj/Wbh65kZjBdUWTUY6ySDUVgZRIQJwgqitWZ44iTtoVY6w+3EMjEcykFNoI6m4maqfbXYbXl6kB19yJzKOd5uPli5w7ywLdCDLB7/CyF9GLux+HU/mfEQnW98D0op6m+7BUfJ/OvihMUx+LXvMHrXf1L54XdS8qKFRyANI2tVWRjHnSmixH89NtuZTc2ZXl5PmWsc2w9Oe3ntuAy163LTLy8fL69MjM5QO+2n8fKamcF4eCBMZjKDsbJ4ajG9ZDAKqwERYYKwStBaMxg/Tnu4lc5wB8nsBC6bm/pgA43BZip92/P0IBvK8SDrMz3Ias4xBdkZepAlE4cYyz6EAkodz8FVtHvB40u0tNP99g/hPfcsam7+OMoh2WRLRegPf+HYJ79A6XXXsO1db1rwdoxsgvHYXSQdSbyZEitzNr/9Znp5tVrJJQ+f6uW163Ko3o3KY1uzeXmVuctpshJdfM7AVAajWYMxRCKdlQxGYU0gIkwQViGGztIf7acj3EZ3pJO0kcZj99BQ3ERTcAdbPBX5eZAN95sXwZZ9EBpakAdZOtXFWPJ3ZG2aEnUeHu/eBY9r/J77GbjxK5S96uVsfdvrF7wdYW4SR9vpfsdHKGqqp+6Ln0Y5F5bFl8mMMh7/OWl7loBRgz9wzbyvOcXLq/UhiIws3ssr1ptj+WKaqEbiHvb3jHKg23Smn5nBeLFVg1EyGIXVjogwQVjlZIwMvdFu2kOmB1lWZwk4A2aGZXEzZe7yeQXZnB5kTRejdl4+rwdZJjPMePxu64Jcjdf3kgV7iR3/4m2M3f0bMXJdAtJDw3S9+X0op4P6r38eR9nC1vKlk52Mpe4zhTfn4vFdcdr2BfHyMrL0xXrpmMXLq9heR8egnQO9YxzsGeNExMxgrAi4rTVdZZLBKKxJRIQJwhoilU3SHemiPdTGsVgfGk2Jq9Scmiluptg1/0V3Tg+yHZea0YqqnbN6kGWzcUKxn5B0JCnK+Cj2vxKbbf6L6zPeP5Ol78OfJXrwEDU3fhT/nsLUL9zoGPEE3W//MKmBQepuvXHBBrmJ+IOEjMfnnYLWkZHpae9JL6+qs8ykkOY9KM/8dUMNbTAQO0ZHuI2ucCcpI4nbXkSFu4FIaBttg3Cwd3wqg7HY4zRd6SWDUVgniAgThDVKIpMwPcjCbQzGjwOwuWiLZQrbhM85vx2Bzmag+3F0y4OmB1kmCf6y6eLHMzzIDMMgFv0lUcdJnBkbJZ6X43DmZyOQSzaeoPvtHyI9cIK6r36Oosa6M96GMI3OZum74UaiDz1CzY034L/0wjPehmEYxGL/RdQ+iCNjo9TztzicW099n3gY3fawWWLrWIv5YEXDtJdXYO6SP1Pb0JoTiUE6QqaXVyKbAMNFNlHP8GgZLcczHJUMRmGDICLsDEhmsigULodk1Airi2g6QkfIFGTDEycB2OatNLPGAk0UOfL0IOt41JxS6joERnZOD7JE7K+EeBKlocR+BW7PuWfc5/TQMF1veT8oRf3Xb8a5ef7STsIz0Voz+MXbGPvlPWx915sou27+tVszyWZjhGI/I+mYoCjjpdj3Smx2j7n9ZBzdcdAUXj1PTnt57dxrJnuUbp1n62YfRyaGTUuJcBuhZJSRcR+RcCXHhn20nUg9I4PxktpSzt4WlAxGYV0jIuwMuOuRfm7+fSt+t4Myr5Myn4syr4tSr+uU+2U+J6VeF+U+FwG3Q8LlwrIynhybMq4MpcZR2KjyV9MUbKY2UI/LnqcHWdsB0/Ki7+lZPchSyQ7GU78na9MEdC1e74vOeJ1YorWTnnd8GGfFZmq/9FmxrlgAQ//xI4a/9xPKr/87Kt7yujN+fdrajxmbJmBU4fVdgzIy0Ll4L6/x5BjtIfNY7BxOcGzYz8hYOb0nHSQz+pQMxktqSzm/qkQyGIUNhYiwM+Dp42H2dY0wGk8zFksxEk8xFkszGk8RSqSZ7RNy2BSlXqclziZFm5Ny36R4M0XbpJiTKJtQKCajD+2WoWUsE8Wu7NQG6mgMNlPtr8WRR33IOT3Idu1FN+0mZNxH0pHCnSmi2HcddvuZCanYY0/S+/5P4a6vpfbfP4XdtziH/o3EyE9/xYmv3k7JS1/Atve97Yx/8MWjfyCsWkFDie1i3Ceci/byiqTCtIfaODDQxVPHkhwb9jE44ieRMr/b6sq87Kkr5ZLaMslgFDY8IsIKRMYwGI+nGYubomwklmIsnjpVsMVTjFqiLZkxZt2O3+2wBNq0MCu3Imu5gq1MomzCGWCuwzluRiTCHUxkEzhtLuoDDTQWN7PdV7VADzIbuuZsEpdXEi1OYDcUJc5nn7GfWGTfAfpuuBHvubuouflj2NyS5TYf47/9IwOf+xKBv7mcqo+/F2XPP4KUzcYJx37OhCOOK6UIPmXD9sSBHC+vS8yIV55eXvFMnIPHj/Kn9n6ODKQ5NuwjNmGKqy0BF5fWlkkGoyDMgoiwFUBrTTyVZTSeYiyezhFspmgbjZm3846yTU6DTkXbckXb9H2JsgkwmZHWT3uoja5IJ2kjRZHdQ0OwkabiZio82/L0IOubtiUIDZHesY3Qc5ow7IpAphJv4GVnND0Z+v0DHPvMv+PfcwFVn/4gNvfiioevZ8Z/9ycGPvdlfBecS/WNN2Bz5R9NSk0cZTz1J7J2ja8/jPc3h1B2F6rhQjPiVXd+Xl5eJ6MRftvaxr6uIVqPa8ZjprjyuxUX1ZSwt34Le2pLqS6VDEZBmAsRYWuA3CjbyKRAmynYChBlm3pOomwbhoyRoS/aS0e4lZ5IN1mdxefw01jcTFOwmfKiTfl7kLXsI9v/CJHn15Es8eJMZCmO7sZRdeVpPchyGfv1fRz//K34Ln4W1Z/9MLYiiZrMZPye+xm46at4LziHmn/7CDZPfjYhxmgfsdg9RMsMbFlN8MFOXPEt5hq/xovn9fJKpLIc7Bvh/rZuHukNMzCmAIXTbrBjq5MrGrZwVWMVzVskg1EQ8kVE2DrjtFE2S6RNRtlGrCjbbDhsyhRqk9OfM6Jq02vaJMq2XkhlU/REumgPt9Ef7UNjUOwqscrD7KDEnZ8Hme57isTE/xDZbh4T/pYhPOPbsO28ck4PslzG77mfgZtvxXveWVR/7gbsXk9BxrceGPv1fRz/wtfwXXReXiJ10ssrffIg4T3lZDwu3OEUwZFG7A3PPq2XVzprcPh4mIe7Rvhr9yBHByfIGgqb0mwrS3J+tY/nNdVwRW0NTilBJQgLQkTYBqdQUbaA20FZTpRtpmCbTEiQKNvaYCKToDPSQUeojePxAQDKizbRZLn0+53zG3FmJnoJTdxDygWu8ASBew9jT7qnMizZUj/ncRD6/QMc+7cv4tnVTM1NH8UemN/zbL0z8rNfc+Ir38a350KqPzP3dK1OhNGtppeXHmghcdVOojsqUBqC6Qa8pVfP+jpDa1qHohzoGWN/zyiP9o4xkdGAZlPxBLVbkuypLeP5jU3UFW+Xc1gQCoCIMCFvcqNsk6KsIFG2qTVts9t+iE/QyhJLR+kIt9MRauPkxBAAWz3bTA+yYBMex9yRKsMwiMfvJaJ6UBp8A0k89xxEZbNQstX0H9t1Oaps+zNeG37gQfo/eQvu6kpqbvoozorNSzbG1Yw2DIZu+z4jd95N4Mo9bP/4+56xBkynEuj2g2bChOXllT6nmcierWRcNtwZF0HPS3E4t0y/Rmv6xhLst0TXwd4xQgmzBmOpP0Xlpig1m1Psravg3C3NbPdtx6Yk4iUIhUREmLBkTEbZZoo2c4r01PujsTSp7PxRtnKvi1LfDF+2HNsPv0TZlpRQatwyhW1lLDmGQrHdV01TcTN1gYY5PcjSqX7CE/eScmRwZBTBE5twHDpiepBheZDtssw/g5umXhd95HH6P3YTNreb6hs/imdHwzKNdHWg02kGbvoqofv+TOm1L2brO984lQWpMynoOoTRkuvltQm9ew+xXZq4O4ZNQ0DtpshzJTabjZORJPt7RtnfM8aBnBqMJV6o3BShoixMzeYkZ2+poSHYRLW/Ji8bE0EQFoaIMGFVMFeULVewmc+ZU6X5RNmmBdsz/dgmkxAkyrYwtNaMJkfoCJkO6JF0BLuyU+WrpiHYRG2gDpf91PVKhmEwkfgLEf00hgJvthg/V6DanzLd2AdP9SBTOy5FeYuZ6Oql7wOfJhOOUPWJ9xK4bN7vq3VBZjxE/8dvJn7oKTb/82vY9E+vNN3qew+bU43tBywvryBqx2Ww8zImik8QoQVDaTzZYgzb1Rw6lp0SXd1WDcZgkZ2GCoOy0mG2lI5R6tfUBWtpCDZR46/FYRPvLkFYDkSECWuSfKJsk2va8omylU1mjM4SZZt8XqJss6O1ZihxwirC3EEsE8OmbFT5amgINlIbqMedI8iy2QjR2H8Tt4+jNPh1NV7fC1DhccuD7EEYMT3IqDkbtWsv2bIm+j52CxPt3Wx+/avZ9Jq/R52hO/9aItHaQf8NN5IZC1H5vrcSPHurKbxaH4ZE+BleXqlUC5HUPiJa09Lv5cjxJh49ZqdlMIIGPE47Z1d6qNqcwB/ox+sbx2GzU+2vpTHYRE2gDqcIL0FYdkSECeueQkfZppIOJMr2DCYFWWe4nc5wB7FMFBs2tvuraQg2Uheox203rRBSyQ4iyT+TcqSxZyFgOwu3NW027UG2D0Inwe6EmvMYe3qMk78/jO/yPWz/0DvW5YL98Xv/yPFbvo5nm5/K6y7CfvIoRIbB8Uwvr0Sil4O9+zhw3M7jfR5aBj1kDIXDpjivMsju7S62lI2TdXUyYUSxKdu08PLX5VXCShCEpUNEmCDMIJ01GE+kT8kKnc4UXVyUrXwO24/1GGXTWnMycYLOcAedkQ6i6YhZx9JXRX2wkbpgA0X2IibiB4lkHyVj1zgyNvyO83AXXWKKsRwPMt36EMTG0cpBuC9JPO6n7G3vwXvumbnzr1aysTgnv/glVM8jFDf6cDrTYLND7XmWl9dFaGcRbUNRHurs4aHuXp447mIibUOh2VnhZ09tGY0VGl/gBMcnuoimI9iwUeWvoXGOaWJBEFYOEWGCsAhmi7JNirRnCLbTRNmcdnVKVuiUYJtRqmoyCWGtRdm01pycGKIz3EFXuJ2IJci2+6poCDZS46tBp/YT021k7Vhi7BzcRZdOuZoABDgAABADSURBVO5rw4D+I+iWfRgtD6IyE2RSmoy/Ds/fvgZVs3teD7LViI6MkHrgV2QfvR+3z0ADavsu1FlXQNMl9E84pjMYe0YJTWQBqCpNclFllksbdlC9xclwqpueSBeJbAK7srPdV019sIG6QMMp08GCIKweRIQJwjIyX5RtprnuXFG2YJFj2sYjV6DNYvux2qJsWmuGJ06aEbJwO5F0GIWiwruVGl8tWx0nsDn6TDGWVXhVEx7vFdhs00JCZ9IYLftJ3PNj3HoYm0Ohi4LYzn72vB5kqwHTy2s/+um/oI+3ooCJqA3HBc8jdMlLOTii2d9tZjFOZjBu9mU4rzrGs6riXLzVht3bTG98jN5INykjhdPmpNpfS32ggWp/rUw1CsIaQESYIKxStNbEUtlTBVtOlG1mzdF8o2yneLGtcJRNa83IxDDdkU66I12MJkcAKHGVsr3IxqaicQIesGvwGhV4PFficJ7qFxb+w5+J3Plt/KUpfFsdKDSUbpsyhZ3Ng2wlOMXLq/cwGFlSccWxfniy+fkcPetSDhyLTGUwFnscXFBpcO72Ic6pjVLuTTKe8DKUCtIfHyKrM7jtbmoD9dQHGtnuqxI7CUFYY4gIE4R1wpJE2XK92J5h+1H4KFs4FaY30kV3pIvj8QE0miKbk60eg80+zSY3+LQHj+Ms3EUXYbNERzYSZehbPyB0z70UNwYoe9YmHIkTnM6DbDmYzcsrUVTOg8Ob2HfSy+HyBro8pVMZjBdWl3BhleLcLR1s2zxIKKsYihmcTDgZTacA8Dn8pvAKNrDNW4ltDU7BCoJgIiJMEDYgM6NsI1PlqRYeZZuzOPwCo2zJ7AS90R56It30RXtIG2lsQJkbNnlsVBTBVns5nqJn4XA2Y7PZSBxpZfCrt5M43IKnroKKl5yL2zgBgx3mRrfvRO2c9CALFuCTfCbayJ7i5ZVJTvCUu46Hi87l4WE3R7SfjM2OA82524vZU1fORVV2GkuPEDd6OZ7JMBTXDCU0SUsnV3i2UuOvpSZQR5m7fFVPtQqCkD8iwgRBmJfTRdkmrT3OJMqWK9hmtf3wufC77FNiI2tkGYwP0B/roz/ay4g1bemywWaPYotLUekuobzoHFzus4g9/BhD3/oByc4enNsq2HTtVQSrHNB5AEb6LQ+yc8wIWdPFKLd3UZ+P1gYMtKFb9pFtfZj2uIMDtloOunfyaMxHwlAoramNDnNRuZvnXH0xz6pXZDNP0J/oZzCVZnhCE7a0rsvmpMpfS62/jmp/DUWnKQ0lCMLaRUSYIAgF5XRRtkmRNpazvi00kZl1O3NF2cp8LnxFBoYKkTCOETGOoZwp7DZw26HcrdjicrLNVYG/y8X4d/9M4skj2PxeglddQcne3biNQTj6EIQtD7L687Ht2gv1F6Cc+S1o11rDyR6MIw/Sd+QJDkQ8HKCKR1QV41lzmrQyGeGswS7OjQ9zxQt3E7i6gsHsMYZSMUZSBqEUaMAGbCkqY7u/iSp/NZs9W2SaURA2AKtahCmlXgx8CbAD39Za33i69iLCBGHtkRtlmzLQnSXKNvncXFE2nwu87jQuVxq3K0ORO4PPnaXMm2Gzx2BrNkV5xwDlf+kkEHcQuPQigru3UWQbhs6DEA+By4NqvMh0oq85B2V/5kJ3PXacoccf4sCRLg5EvBzUlQximsZusmc5JzTIzmMt7NqZIrC3gmilj3GlGUtrLHcJbEC5y81W73aqAmezzVcpi+oFYQOyakWYUsoOtAIvBPqBA8CrtdZPz/UaEWGCsL7JjbKN5E6DzoiyDccmGIlNEE3Ovh27zcDrzhJ0pQk60hTb05Q7smxWE2xJjbA5FWKTkWZzbTPl51xOwlvOwQOP8nDHCR6ZCNJtlADgd2TYGYzQUB6mZlscX6lB3GYjnoVszlem36EocxVRUbSFSv95bPJtx67sy/CJCYKwmslXhK3ET7Q9QLvWuhNAKfVj4FpgThEmCML6RimF3+3A73ZQXTr/Oq7JKNtINEnf+AC9Y/0MRqMMx7OMJxThCQfDEy76Yl4SKTtZwwbUTm/gMHB4EDgOuHHYq9hWHueyzSfYvilGeTDJ5Br5hAKb3UbAbqeyqIgydymbPHWUe3fhcohZqiAIC2clRNh2oC/nfj9w6cxGSqk3AW+y7kaVUkeXuF+bgOElfo/VzEYe/0YeO2zs8W/kscPGHv9GHjts7PEvx9hr52+yMiJsthzsZ8yJaq1vA25b+u6YKKUO5hM6XK9s5PFv5LHDxh7/Rh47bOzxb+Sxw8Ye/2oa+0qk6fQD1Tn3q4CBFeiHIAiCIAjCirESIuwA0KyUqldKuYDrgV+tQD8EQRAEQRBWjGWfjtRaZ5RS/wLci2lRcbvW+qnl7scsLNvU5yplI49/I48dNvb4N/LYYWOPfyOPHTb2+FfN2NeEWasgCIIgCMJ6Q6ybBUEQBEEQVgARYYIgCIIgCCvAhhJhSql/UEo9pZQylFIXz3juQ0qpdqXUUaXUi+Z4fb1S6mGlVJtS6i4rsWBNYvX/kPXXrZQ6NEe7bqXUk1a7dVG2QCn1CaXUsZzxXzNHuxdbx0O7UuqDy93PpUIp9XmlVItS6gml1N1KqZI52q2bfT/fvlRKua1zot06x+uWv5eFRylVrZT6o1LqiPXd985Z2lyllArlnA8fW4m+LhXzHcfK5MvWvn9CKXXhSvSz0Cildubs00NKqbBS6l0z2qyrfa+Uul0pNaSUOpzzWJlS6j7run2fUqp0jte+1mrTppR67bJ1Wmu9Yf6As4CdwJ+Ai3Me3w08DriBeqADsM/y+p8A11u3vwG8ZaXHVKDP5RbgY3M81w1sWuk+Fni8nwDeO08bu3UcNAAu6/jYvdJ9L9D4rwYc1u2bgJvW877PZ18CbwW+Yd2+HrhrpftdoLFvAy60bgcwS8bNHPtVwK9Xuq9L+Bmc9jgGrgHuwfSwvAx4eKX7vASfgR0YBGrX874HngNcCBzOeexm4IPW7Q/O9n0HlAGd1v9S63bpcvR5Q0XCtNZHtNazOe9fC/xYa53UWncB7ZjllaZQSingecDPrIe+C/zdUvZ3ObDG9SrgzpXuyypjqryW1joFTJbXWvNorX+ntc5Ydx/C9Opbz+SzL6/FPKfBPMefb50baxqt9XGt9aPW7QhwBLNqiTDNtcD3tMlDQIlSattKd6rAPB/o0Fr3rHRHlhKt9QPA6IyHc8/tua7bLwLu01qPaq3HgPuAFy9ZR3PYUCLsNMxWSmnmF1U5MJ5z8ZqtzVrk2cAJrXXbHM9r4HdKqUesUlLrhX+xph5unyM8nc8xsR54PWYUYDbWy77PZ19OtbHO8RDmOb9usKZYLwAenuXpy5VSjyul7lFKnb2sHVt65juON8K5fj1z/9Bez/seoEJrfRzMHyXAllnarNgxsBJli5YUpdTvga2zPPURrfV/zvWyWR6b6d2RV7ml1USen8WrOX0U7Aqt9YBSagtwn1Kqxfq1sao53diBrwOfxtx/n8acjn39zE3M8tpVvb9zyWffK6U+AmSAH86xmTW572dhXZ7fZ4JSyg/8HHiX1jo84+lHMaepotb6yF8CzcvdxyVkvuN4ve97F/By4EOzPL3e932+rNgxsO5EmNb6BQt4WT6llIYxw9QO65fyqi+3NN9noZRyAK8ALjrNNgas/0NKqbsxp3ZW/YU43+NAKfUt4NezPLWmy2vlse9fC7wMeL62FkXMso01ue9nIZ99Odmm3zovinnmtMaaRCnlxBRgP9Ra/2Lm87miTGv9G6XU15RSm7TW66K4cx7H8Zo+1/PgJcCjWusTM59Y7/ve4oRSapvW+rg1zTw0S5t+zPVxk1Rhrh1fcmQ60uRXwPVWhlQ95i+B/bkNrAvVH4FXWg+9FpgrsrZWeAHQorXun+1JpZRPKRWYvI25oPvwbG3XEjPWe1zH7GNat+W1lFIvBj4AvFxrHZ+jzXra9/nsy19hntNgnuN/mEucriWsdW3/ARzRWv+/OdpsnVz/ppTag3ldGFm+Xi4deR7HvwL+t5UleRkQmpy+WifMOduxnvd9Drnn9lzX7XuBq5VSpdbylKutx5ae5Vj9v1r+MC+4/UASOAHcm/PcRzAzqI4CL8l5/DdApXW7AVOctQM/BdwrPaZFfh53AG+e8Vgl8Juc8T5u/T2FOZW14v0uwLi/DzwJPIF5gm6bOXbr/jWY2WQd62Xs1rjaMdc/HLL+JrMC1+2+n21fAp/CFKIARdY53W6d4w0r3ecCjftKzGmVJ3L29zXAmyfPfeBfrH38OGaixt6V7ncBxz/rcTxj/Aq41To2niQnc36t/wFeTFFVnPPYut33mGLzOJC2rvVvwFzbeT/QZv0vs9peDHw757Wvt87/duD/LFefpWyRIAiCIAjCCiDTkYIgCIIgCCuAiDBBEARBEIQVQESYIAiCIAjCCiAiTBAEQRAEYQUQESYIgiAIgrACiAgTBGFVoZTKKqUOKaUOK6V+qpTyLmJbVymlfm3dfrlS6oOnaVuilHprzv1KpdTP5movCIKwWESECYKw2khorc/XWp8DpDB9jaawTDXP+LtLa/0rrfWNp2lSArw1p/2A1vqVp2kvCIKwKESECYKwmvkfoEkpVaeUOqKU+hpmvbtqpdTVSqkHlVKPWhEzP5gVAZRSLUqpv2CW5cJ6/HVKqa9atyuUUndbhYsfV0rtBW4EGq0o3Oet9zxstS9SSn1HKfWkUuoxpdRzc7b5C6XUb5VSbUqpm63H7UqpO6xo3pNKqX9dzg9NEIS1wbqrHSkIwvrAquH4EuC31kM7MZ2s36qU2gTcALxAax1TSn0AeLclgr4FPA/T+fquOTb/ZeDPWuvrlFJ2wA98EDhHa32+9f51Oe3fBqC1PlcptQv4nVJqh/Xc+cAFmJU4jiqlvgJsAbZb0TyUUiWL+zQEQViPSCRMEITVhkcpdQg4CPRi1j4E6NFaP2TdvgzYDfzVavtaoBbYBXRprdu0WQ7kB3O8x/OArwNorbNa69A8fboSs9wVWusWoAeYFGH3a61DWusJ4GmrH51Ag1LqK1atzvAs2xQEYYMjkTBBEFYbiclo1CRWjeFY7kPAfVrrV89odz5mrcRCo07zXDLndhZwaK3HlFLPAl6EGUV7FWZtOkEQhCkkEiYIwlrkIeAKpVQTgFLKa00PtgD1SqlGq92r53j9/cBbrNfalVJBIAIE5mj/APAaq/0OoAY4OlfnrOlSm9b658BHgQvPYGyCIGwQRIQJgrDm0FqfBF4H3KmUegJTlO2ypgTfBPy3tTC/Z45NvBN4rlLqSeAR4Gyt9Qjm9OZhpdTnZ7T/GmC32t8FvE5rnWRutgN/sqZK7wA+tJBxCoKwvlHmsglBEARBEARhOZFImCAIgiAIwgogIkwQBEEQBGEFEBEmCIIgCIKwAogIEwRBEARBWAFEhAmCIAiCIKwAIsIEQRAEQRBWABFhgiAIgiAIK8D/B7Ap/1xCqQ35AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 720x468 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (10,6.5))\n",
    "\n",
    "target = np.repeat(0, 1000) \n",
    "pred = np.arange(-10,10, 0.02)\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_mse = [mse(target[i], pred[i]) for i in range(len(pred))]\n",
    "loss_mae = [mae(target[i], pred[i]) for i in range(len(pred))]\n",
    "loss_sm_mae1 = [sm_mae(target[i], pred[i], 5) for i in range(len(pred))]\n",
    "loss_sm_mae2 = [sm_mae(target[i], pred[i], 10) for i in range(len(pred))]\n",
    "loss_logcosh = [logcosh(target[i], pred[i]) for i in range(len(pred))]\n",
    "loss_quan1 = [quan(target[i], pred[i], 0.25) for i in range(len(pred))]\n",
    "\n",
    "\n",
    "losses = [loss_mse, loss_mae, loss_sm_mae1, loss_sm_mae2, loss_logcosh, loss_quan1]\n",
    "names = ['MSE', 'MAE','Huber (5)', 'Huber (10)', 'Log-cosh', 'Quantile (0.25)']\n",
    "cmap = ['#d53e4f',\n",
    "'#fc8d59',\n",
    "'#fee08b',\n",
    "'#e6f598',\n",
    "'#99d594',\n",
    "'#3288bd']\n",
    "\n",
    "for lo in range(len(losses)):\n",
    "    ax1.plot(pred, losses[lo], label = names[lo], color= cmap[lo])\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "ax1.legend()\n",
    "ax1.set_ylim(bottom=0, top=40)\n",
    "\n",
    "# fig.savefig('/Users/princegrover/Documents/msan/Machine-Learning/images/all_regression.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Classifications loss\n",
    "\n",
    "* Binary cross entropy \n",
    "* Negative log likelihood\n",
    "* Cross entropy\n",
    "* Kullback–Leibler divergence\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Binary cross entropy or negative log likelihood"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def bin_ce(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: binary cross entropy loss\n",
    "    \"\"\"\n",
    "    loss = np.where(true==1, np.log(pred), np.log(1-pred))\n",
    "    return -np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_bin_ce = [bin_ce(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot for binary cross entropy\n",
    "ax1.plot(pred, loss_bin_ce)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Binary Cross Entropy Loss/ Log Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "\n",
    "fig.tight_layout()\n",
    "# fig.savefig()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Focal loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "def focal(true, pred, gamma):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: binary cross entropy loss\n",
    "    \"\"\"\n",
    "    loss = np.where(true==1, (1-pred)**gamma*(np.log(pred)), pred**gamma*(np.log(1-pred)))\n",
    "    return -np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "gammas = [0, 0.5, 1, 2, 5]\n",
    "losses_focal = [[focal(target[i], pred[i], gamma) for i in range(len(pred))] for gamma in gammas]\n",
    "\n",
    "# plot for binary cross entropy\n",
    "for i in range(len(gammas)):\n",
    "    ax1.plot(pred, losses_focal[i], label = gammas[i])\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Focal Loss')\n",
    "ax1.set_title(\"Loss with Predicted values (Color: Gammas)\")\n",
    "ax1.legend()\n",
    "\n",
    "# make right and top lines invisible\n",
    "ax1.spines['top'].set_visible(False)    # Make the top axis line for a plot invisible\n",
    "ax1.spines['right'].set_visible(False) # Make the right axis line for a plot invisible\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Hinge loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "def hinge(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: negative log likelihood loss\n",
    "    \"\"\"\n",
    "    loss = np.max((0, (1 - pred*true)))\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_hinge = [hinge(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot for hinge\n",
    "ax1.plot(pred, loss_hinge)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Hinge Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Square loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sq_loss(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: negative log likelihood loss\n",
    "    \"\"\"\n",
    "    loss = (1 - pred*true)**2\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_sq = [sq_loss(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot for hinge\n",
    "ax1.plot(pred, loss_sq)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Square Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Logistic loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "def log_loss(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: negative log likelihood loss\n",
    "    \"\"\"\n",
    "    loss = np.log(1 + np.exp(-(pred*true)))/np.log(2)\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_log_loss = [log_loss(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot for hinge\n",
    "ax1.plot(pred, loss_log_loss)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Logistic Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Exponential loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'expo' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-32-6606cadaf20d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[1;31m# calculating loss function for all predictions.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mloss_exp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mexpo\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtarget\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpred\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m100\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpred\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      9\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     10\u001b[0m \u001b[1;31m# plot for exponential loss\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-32-6606cadaf20d>\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[1;31m# calculating loss function for all predictions.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mloss_exp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mexpo\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtarget\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpred\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m100\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpred\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      9\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     10\u001b[0m \u001b[1;31m# plot for exponential loss\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'expo' is not defined"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots()\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_exp = [expo(target[i], pred[i], 100) for i in range(len(pred))]\n",
    "\n",
    "# plot for exponential loss\n",
    "ax1.plot(pred, loss_exp)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Exponential Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Kullback–Leibler divergence"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def kld(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: KL divergence loss\n",
    "    \"\"\"\n",
    "    loss = pred*(np.log(pred) - true)\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Embedding loss (have 2 inputs and compare them)\n",
    "\n",
    "* Hinge embedding criteria\n",
    "* L1 Hinge embedding\n",
    "* Cosine distance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Miscelaneus losses\n",
    "\n",
    "* Haversine distance\n",
    "* Weighted average of muliple losses"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
